I ran this simple code:
#[test]
fn play() {
let now = Instant::now();
let mut result: usize = 0;
for j in (1..100_0000 + 1).rev() {
result += j
}
println!("{}", result);
println!("{:?}", now.elapsed());
let now = Instant::now();
let mut result: usize = 0;
for j in (1..=100_0000).rev() {
result += j
}
println!("{}", result);
println!("{:?}", now.elapsed());
let now = Instant::now();
let mut result: usize = 0;
for j in 1..100_0001 {
result += j
}
println!("{}", result);
println!("{:?}", now.elapsed());
let now = Instant::now();
let mut result: usize = 0;
for j in 1..=100_0000 {
result += j
}
println!("{}", result);
println!("{:?}", now.elapsed());
}
and got the output:
running 1 test
500000500000
23.868379ms
500000500000
53.537635ms
500000500000
54.150509ms
500000500000
51.44193ms
Why is the reversed Range (exlusive) version faster than others?