পাঠ ১৩.৪
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 করে।