পাঠ ১৩.৪

Loop বনাম Iterator-এর performance

Performance in Loops vs. Iterators

Iterator high-level abstraction — কিন্তু performance cost কত? উত্তর: প্রায় শূন্য

Benchmark

Rust documentation একটা benchmark করেছে — Sherlock Holmes-এর পুরো collection (12 million character) থেকে "the" শব্দ search। দু'টা version: explicit for loop ও iterator adapter।

test bench_search_for  ... bench:  19,620,300 ns/iter (+/- 915,700)
test bench_search_iter ... bench:  19,234,900 ns/iter (+/- 657,200)

Iterator version সামান্য fast। দু'টোই কার্যত একই — performance বিচারে কোনো পার্থক্য নেই।

Zero-cost abstraction

Iterator হলো Rust-এর zero-cost abstraction-গুলোর অন্যতম। মানে — high-level abstraction use করলে অতিরিক্ত runtime overhead নেই। C++-এর Bjarne Stroustrup-এর "zero-overhead principle" এর মতোই:

"What you don't use, you don't pay for. And further: what you do use, you couldn't hand code any better."

অর্থ — তুমি যা ব্যবহার করছ না সেটার দাম নেই; যা ব্যবহার করছ সেটাকে hand-written-এর চেয়ে ভালো করা সম্ভব না।

Compiler optimization

Iterator chain দেখে compiler অনেক optimization apply করে:

  • Loop unrolling — loop body inline করে repetition।
  • Bounds-check elimination — array access যেখানে safe সেখানে runtime check বাদ।
  • Generic monomorphization — concrete type-এর জন্য optimized code।

ফলাফল — iterator chain-এর compiled output প্রায়শই hand-written assembly-এর সমান বা better।

এই পাঠ থেকে যা শিখলে

  • Iterator vs explicit loop — performance difference নগণ্য।
  • Zero-cost abstraction — Rust-এর core philosophy; high-level code-ও hand-written-এর সমান fast।
  • Compiler iterator chain-এ unroll, bounds-check elimination, monomorphization apply করে।