Learn C++ STL

lesson ৫ / ৯ · sort, comparator আর lambda: algorithm-কে বলে দাও তুমি কী চাও

Module ১২ · sort, comparator আর lambda: algorithm-কে বলে দাও তুমি কী চাও

ভেতরের কথা: introsort, comparator-এর call আর একটা lambda-র খরচ

Proপড়া

Kenji 20,000 জন player-কে score অনুযায়ী সাজায়। ও player number-গুলো sort করে একটা lambda দিয়ে, যেটা প্রত্যেকের score খুঁজে দেখে, আর "নিরাপদে থাকতে" score table-টা by value capture করেছে। Compiler Explorer-এ ওই sort এগারোটা run-এ নিয়েছে 103 থেকে 169 ms। একই lambda by reference capture করলে লেগেছে 1.2 থেকে 1.5 ms, আর শেষে ক্রম হুবহু একই। মানে 80 গুণেরও বেশি দ্রুত। Maria-র প্রশ্নটাই এই lesson-এর প্রশ্ন: "কিন্তু sort তো score শুধু পড়ে, তাহলে একটা copy-তে কী আসে যায়?"

আপনার জন্য এই lesson টা খোলা কি না দেখা হচ্ছে…

ভেতরের কথা: introsort, comparator-এর call আর একটা lambda-র খরচ এর ভেতরে কী আছে

  1. Introsort: একটা sort-এর ভেতরে তিনটা algorithm
  2. একটা partition, ধাপে ধাপে
  3. Unguarded: marker-দের কেন bounds check লাগে না
  4. শেষ ধাপ: একটাই insertion sort, বেশিরভাগটা unguarded
  5. stable_sort: দুই ভাগ, 7-এর টুকরো আর একটা buffer
  6. Comparator-এর call গোনা
  7. sort তোমার comparator কতবার copy করে
  8. Performance lab: একটা lambda-র খরচ কত