Rust में कोड के प्रदर्शन को सही तरीके से कैसे मापें: बेंचमार्किंग और प्रोफाइलिंग
नमस्ते साथियों! मैं लगभग छह महीने से Rust में लिख रहा हूँ और एक समस्या का सामना किया: मैं अपने कोड के निष्पादन समय को ठीक से नहीं माप पा रहा हूँ। मैंने std::time::Instant का उपयोग करने की कोशिश की, लेकिन परिणाम हर रन में बदलते हैं, विशेषकर छोटे फंक्शन्स पर। उदाहरण के लिए, मैं वेक्टर को जोड़ने के दो तरीकों की तुलना करना चाहता हूँ:
```rust
use std::time::Instant;
fn sum_for(v: &[i32]) -> i32 {
let mut sum = 0;
for x in v { sum += x; }
sum
}
fn sum_iter(v: &[i32]) -> i32 {
v.iter().sum()
}
fn main() {
let data = vec![1; 1_000_000];
let start = Instant::now();
let _ = sum_for(&data);
println!("for: {:?}", start.elapsed());
let start = Instant::now();
let _ = sum_iter(&data);
println!("iter: {:?}", start.elapsed());
}
```
मेरे लैपटॉप (Ryzen 5, Linux) पर पहला माप 0.5-1.2 ms दिखाता है, दूसरा 0.3-0.9 ms, और कभी-कभी क्रम बदल जाता है। मैं समझता हूँ कि यह बैकग्राउंड प्रोसेसेस, कैश आदि के कारण है, लेकिन स्थिर आंकड़े कैसे प्राप्त करूँ?