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-র খরচ এর ভেতরে কী আছে
- Introsort: একটা sort-এর ভেতরে তিনটা algorithm
- একটা partition, ধাপে ধাপে
- Unguarded: marker-দের কেন bounds check লাগে না
- শেষ ধাপ: একটাই insertion sort, বেশিরভাগটা unguarded
- stable_sort: দুই ভাগ, 7-এর টুকরো আর একটা buffer
- Comparator-এর call গোনা
- sort তোমার comparator কতবার copy করে
- Performance lab: একটা lambda-র খরচ কত