Cómo medir correctamente el rendimiento (benchmarking) de programas en Rust
¡Hola a todos! Soy nuevo en Rust y estoy tratando de entender cómo medir correctamente el rendimiento de mis programas. En otros lenguajes (por ejemplo, Python o JavaScript) simplemente usaba temporizadores o módulos integrados, pero en Rust resultó ser más complicado.
Escribí una función simple que suma los elementos de un vector y quiero saber cuánto tiempo tarda en ejecutarse:
```rust
fn sum_vec(vec: &Vec) -> i32 {
let mut sum = 0;
for i in vec {
sum += i;
}
sum
}
fn main() {
let data = vec![1; 1_000_000];
// ¿Cómo medir el tiempo de ejecución de sum_vec(&data)?
println!("Sum: {}", sum_vec(&data));
}
```
Intenté usar `std::time::Instant`, pero obtengo resultados extraños: a veces 0 microsegundos, a veces valores muy diferentes en ejecuciones repetidas. También escuché sobre `cargo bench`, pero no entiendo cómo configurarlo.
Por favor, indíquenme:
1. ¿Cómo medir correctamente el tiempo de ejecución de un fragmento pequeño de código?
2. ¿Cómo evitar la influencia del compil