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

*1:いや数日過ぎてたけど空白だったので。きっと参加することに意義があるw<b

*2:nightlyは入ってなかったけどなw−

*3:なんもRustわからん