Avatar ·

Cómo medir correctamente el rendimiento del código en Rust: benchmarking y profiling

¡Hola, colegas! Llevo unos seis meses escribiendo en Rust y me encontré con un problema: no puedo medir correctamente cuánto tiempo tarda mi código. Intenté usar std::time::Instant, pero los resultados varían de una ejecución a otra, especialmente en funciones pequeñas. Por ejemplo, quiero comparar dos formas de sumar un vector: ```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()); } ``` En mi portátil (Ryzen 5, Linux) la primera medición muestra 0.5-1.2 ms, la segunda 0.3-0.9 ms, y a veces el orden cambia. Entiendo que esto se debe a procesos en segundo plano, caché, etc., pero ¿cómo obtener cifras estables?