Nincs új a nap alatt. Ahogy vártam, pontosan ugyanannyi idő alatt fut le a kettő.
Tehát a Rust többletköltség nélkül adja át a futást a C-ből fordított részre.
- hg2ecz blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
De noinline nélkül nem egyezne, nem? Mert akkor beinlájnosítaná, és kész.
- A hozzászóláshoz be kell jelentkezni
Az hagyján, de ennél az egyszerű példánál még a meghívó ciklus sem lenne benne. Helyette ahogy a C-nél is, a fordító végigszimulálja a for ciklust és futáskor már csak az eredménykonstanssal tér itt vissza.
Próbáld ki:
//#[inline(never)]
fn teszt(i: i64) -> i64 {
i + 1
}
fn main() {
let mut eredmeny = 0;
for i in 0..1_000_000_000 {
eredmeny += teszt(i);
}
println!("{}", eredmeny);
}
$ rustc -O teszt.rs
$ time ./teszt
vedd ki a kommentjelet és újra.
- A hozzászóláshoz be kell jelentkezni
Bámulatos és egyben félelmetes :)
Lassan a fordítóprogramok öntudatra ébrednek..
- A hozzászóláshoz be kell jelentkezni
Azért valahol az auto vektorizáció is félelmetes: https://rust.godbolt.org/z/jb3qYP , 24 minta alatt ciklus sincs.
- A hozzászóláshoz be kell jelentkezni