ARMv8での「Rustの3種のべき乗演算の速度差について」
P.S. 12/14
この記事は、多分Rustその2 Advent Calendar 2017の11日目*1の記事ですw−
以下記事の引用追記です。
参照記事にARMv8のベンチが抜けていて、ちょうど手元にRustが入ったARMv8*2が有ったので補足で実行してみた。
注意。なんかミスしてるのかテストが実行出来ていない*3
$ cargo test --release Compiling leibniz_formula v0.1.0 (file:///home/ubuntu/rustProject/leibniz_formula) Finished release [optimized] target(s) in 3.7 secs Running target/release/deps/leibniz_formula-8a2c0c0eabb03fbe running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
64ビット ARM 4x Cortex-A53 @ 1.30GHz
os : ubuntu 16.04
board : PINE A64+
- f64powf : 318,065,715 ns
- f64powi : 216,401,904 ns
- i64pow : 151,364,829 ns
$ RUSTFLAGS='-C opt-level=3 -C target-cpu=native' \ > cargo +nightly bench --features benches Compiling leibniz_formula v0.1.0 (file:///home/ubuntu/rustProject/leibniz_formula) Finished release [optimized] target(s) in 8.22 secs Running target/release/deps/leibniz_formula-bac0637812b2becb running 3 tests test benches::bench_leibniz_f64powf ... bench: 318,065,715 ns/iter (+/- 396,371) test benches::bench_leibniz_f64powi ... bench: 216,401,904 ns/iter (+/- 50,139) test benches::bench_leibniz_i64pow ... bench: 151,364,829 ns/iter (+/- 67,599) test result: ok. 0 passed; 0 failed; 0 ignored; 3 measured; 0 filtered out
$ rustup run nightly rustc --version --verbose rustc 1.24.0-nightly (6a3601944 2017-12-12) binary: rustc commit-hash: 6a360194404c07e09b548626efa4b7c7777510e9 commit-date: 2017-12-12 host: aarch64-unknown-linux-gnu release: 1.24.0-nightly LLVM version: 4.0 $ uname -srm Linux 3.10.105-0-pine64-longsleep aarch64 $ cat /proc/cpuinfo Processor : AArch64 Processor rev 4 (aarch64) processor : 0 processor : 1 processor : 2 processor : 3 Features : fp asimd aes pmull sha1 sha2 crc32 CPU implementer : 0x41 CPU architecture: AArch64 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4 Hardware : sun50iw1p1