অনেক ছোট প্যাকেজ ঠিক আছে। আসলে, আপনি যদি টিসিপি ওভারহেড সম্পর্কে চিন্তিত হন তবে কেবল একটি sertোকানbufferstream
এমন যা 1500 টি পর্যন্ত চর সংগ্রহ করে (বা আপনার টিসিপি এমটিইউগুলি যা-ই হোক, এটি গতিবেগের জন্য অনুরোধ করা ভাল) এবং সমস্যাটি এক জায়গায় সমাধান করুন। এটি করা আপনার অতিরিক্ত প্যাকেজটির জন্য 40 ডলার বাইটের ওভারহেডকে বাঁচায় যা আপনি অন্যথায় তৈরি করেছিলেন।
এটি বলেছে যে, কম ডেটা প্রেরণ করা আরও ভাল এবং সেখানে বৃহত্তর অবজেক্ট তৈরি করা সহায়তা করে। অবশ্যই পাঠানোর "UID:10|1|2|3
চেয়ে এটি প্রেরণ করা আরও ছোট UID:10;x:1UID:10;y:2UID:10;z:3
। প্রকৃতপক্ষে, এই মুহুর্তে আপনার চাকাটি পুনরায় উদ্ভাবন করা উচিত নয়, প্রোটোবুফের মতো একটি লাইব্রেরি ব্যবহার করুন যা এর ফলে ডেটা হ্রাস করতে পারে 10 বাইট স্ট্রিং বা তারও কম।
কেবল আপনার জিনিসটি ভুলে যাওয়া উচিত নয় Flush
প্রাসঙ্গিক অবস্থানগুলিতে আপনার স্ট্রিমে একটি কমান্ড সন্নিবেশ করা , কারণ আপনি আপনার স্ট্রিমে ডেটা যুক্ত করা বন্ধ করার সাথে সাথে এটি কিছু প্রেরণের আগে এটি অসীম অপেক্ষা করতে পারে। সত্যই সমস্যাযুক্ত যখন আপনার ক্লায়েন্ট সেই ডেটার জন্য অপেক্ষা করছে এবং ক্লায়েন্ট পরবর্তী আদেশটি না পাঠা পর্যন্ত আপনার বিভাজন নতুন কিছু প্রেরণ করবে না।
প্যাকেজ হ্রাস এমন কিছু যা আপনি এখানে প্রান্তিকভাবে প্রভাবিত করতে পারেন। আপনার প্রেরিত প্রতিটি বাইটটি সম্ভাব্যভাবে দূষিত হতে পারে এবং টিসিপি স্বয়ংক্রিয়ভাবে পুনঃস্থাপনের জন্য অনুরোধ করবে। ছোট প্যাকেজগুলির অর্থ প্রতিটি একক প্যাকেজ দূষিত হওয়ার জন্য কম সুযোগ, তবে তারা ওভারহেড যুক্ত করার কারণে আপনি আরও বেশি বাইট প্রেরণ করেন, হারিয়ে যাওয়া প্যাকেজের প্রতিকূলতা আরও বাড়িয়ে তোলেন। যখন কোনও প্যাকেজটি হারিয়ে যায়, অনুপস্থিত প্যাকেজটি পুনরায় পাঠানো এবং গ্রহণ না করা অবধি টিসিপি সমস্ত উত্তরোত্তর ডেটা বাফার করবে। এর ফলে একটি বড় বিলম্ব হয় (পিং)। প্যাকেজ ক্ষতির কারণে ব্যান্ডউইথের সর্বমোট ক্ষতি নগণ্য হলেও, উচ্চতর পিং গেমসের জন্য অনাকাঙ্ক্ষিত হতে পারে।
নীচের লাইন: যথাসম্ভব অল্প ডেটা প্রেরণ করুন, বড় প্যাকেজগুলি প্রেরণ করুন এবং এটি করার জন্য আপনার নিজের নিম্ন স্তরের পদ্ধতিগুলি লিখবেন না, তবে সুপরিচিত গ্রন্থাগার এবং পদ্ধতিগুলির উপর নির্ভর করুনbufferstream
ভারী উত্তোলন পরিচালনা করার জন্য ।