Skip to Content
Nextra 4.0 is released 🎉
DocumentationBack-of-the-envelope Estimationল্যাটেন্সি নাম্বার যা প্রতিটি প্রোগ্রামারের জানা উচিত (Latency numbers every programmer should know)

ল্যাটেন্সি নাম্বার যা প্রতিটি প্রোগ্রামারের জানা উচিত (Latency numbers every programmer should know)

গুগলের ড. ডিন ২০১০ সালে সাধারণ কম্পিউটার অপারেশনের সময়কালের একটি তালিকা প্রকাশ করেন [১]। কম্পিউটার আরও দ্রুতগতিসম্পন্ন ও শক্তিশালী হওয়ার কারণে এর মধ্যে কিছু নাম্বার বা ডেটা এখন পুরোনো হয়ে গেছে। তবে, এই নাম্বারগুলো এখনও আমাদের বিভিন্ন কম্পিউটার অপারেশনের গতি (কোনটা কত দ্রুত বা ধীর) সম্পর্কে একটি ভালো ধারণা দিতে পারে।

সারণী ১ (Table 1)

অপারেশনের নাম (Operation name)সময় (Time)
L1 ক্যাশ রেফারেন্স (L1 cache reference)0.5 ns
ব্রাঞ্চ মিসপ্রেডিক্ট (Branch mispredict)5 ns
L2 ক্যাশ রেফারেন্স (L2 cache reference)7 ns
মিউটেক্স লক/আনলক (Mutex lock/unlock)100 ns
মেইন মেমরি রেফারেন্স (Main memory reference)100 ns
জিপি (Zippy) দিয়ে ১ কিলোবাইট কমপ্রেস করা10,000 ns = 10 µs
১ জিবিপিএস (1 Gbps) নেটওয়ার্কে ২ কিলোবাইট ডেটা পাঠানো20,000 ns = 20 µs
মেমরি থেকে ক্রমান্বয়ে (sequentially) ১ মেগাবাইট রিড করা250,000 ns = 250 µs
একই ডেটাসেন্টারের ভেতরে রাউন্ড ট্রিপ (Round trip)500,000 ns = 500 µs
ডিস্ক সিক (Disk seek)10,000,000 ns = 10 ms
নেটওয়ার্ক থেকে ক্রমান্বয়ে ১ মেগাবাইট রিড করা10,000,000 ns = 10 ms
ডিস্ক থেকে ক্রমান্বয়ে ১ মেগাবাইট রিড করা30,000,000 ns = 30 ms
ক্যালিফোর্নিয়া (CA) -> নেদারল্যান্ডস -> ক্যালিফোর্নিয়ায় (CA) প্যাকেট পাঠানো150,000,000 ns = 150 ms

সারণী ২: নোট (Table 2 Notes)

  • ns = ন্যানোসেকেন্ড (nanosecond), µs = মাইক্রোসেকেন্ড (microsecond), ms = মিলি সেকেন্ড (millisecond)
  • 1 ns = 10^-9 সেকেন্ড
  • 1 µs = 10^-6 সেকেন্ড = 1,000 ns
  • 1 ms = 10^-3 সেকেন্ড = 1,000 µs = 1,000,000 ns

গুগলের একজন সফটওয়্যার ইঞ্জিনিয়ার ড. ডিনের এই নাম্বারগুলো ভিজ্যুয়ালাইজ করার জন্য একটি টুল তৈরি করেছেন। টুলটি সময়ের পরিবর্তনের বিষয়টিও বিবেচনায় রাখে। চিত্র ১-এ (Figure 1) ২০২০ সাল পর্যন্ত এই ল্যাটেন্সি নাম্বারগুলোর ভিজ্যুয়ালাইজেশন দেখানো হয়েছে (ছবির উৎস: রেফারেন্স ম্যাটেরিয়াল [৩])।

চিত্র ১-এর ডেটা বিশ্লেষণ করে আমরা নিচের সিদ্ধান্তগুলোতে পৌঁছাতে পারি:

  • মেমরি অনেক দ্রুত কাজ করে, কিন্তু ডিস্ক অনেক ধীরগতির।
  • যতটা সম্ভব ডিস্ক সিক (disk seeks) এড়িয়ে চলা উচিত।
  • সাধারণ কম্প্রেশন অ্যালগরিদমগুলো (compression algorithms) বেশ দ্রুত কাজ করে।
  • ইন্টারনেটে ডেটা পাঠানোর আগে সম্ভব হলে তা কমপ্রেস (compress) করে নেওয়া উচিত।
  • ডেটাসেন্টারগুলো সাধারণত বিভিন্ন অঞ্চলে (regions) অবস্থিত থাকে, তাই এদের মধ্যে ডেটা আদান-প্রদান করতে বেশ খানিকটা সময় লাগে।