Rust में 240+ तत्वों वाली सरणी पर लूप 10 गुना धीमा क्यों है?
नमस्ते, सहकर्मियों। मैं Rust सीख रहा हूँ और मुझे एक अकथनीय व्यवहार का सामना करना पड़ा है। मैंने एक सरल बेंचमार्क लिखा: `for` लूप में सरणी के तत्वों का योग करना। 239 तत्वों तक के आकार की सरणियों के लिए, यह बहुत तेज़ है (1 माइक्रोसेकंड से कम)। जैसे ही आकार 240 तक पहुँचता है, निष्पादन समय अचानक बढ़कर 10–15 माइक्रोसेकंड हो जाता है। आकार में और वृद्धि से समय में धीरे-धीरे वृद्धि होती है, लेकिन यह पहली 10 गुना छलांग मुझे हैरान करती है।
यह वह कोड है जिसका मैं परीक्षण कर रहा हूँ:
```rust
use std::time::Instant;
fn sum_array(arr: &[i32]) -> i32 {
let mut sum = 0;
for &x in arr {
sum += x;
}
sum
}
fn main() {
let size = 240;
let arr: Vec = (0..size).collect();
let start = Instant::now();
let _ = sum_array(&arr);
println!("{:?}", start.elapsed());
}
```
मैं `cargo build --release` के साथ संकलन कर रहा हूँ। मैंने तत्व प्रकार को `i64` में बदलने की कोशिश की — प्रभाव बना रहता है। मैंने विभिन्न आकार आज़माए: 239 — तेज़, 240 — धीमा। मामला क्या हो सकता है? क्या यह LLVM की विशेषता है?