Open23

Rustで高速化

Toru3Toru3
[profile.release]
lto = true
panic = 'abort'
codegen-units = 1

とすると速いバイナリが生成されやすいが、コンパイルが遅くなるなどの弊害もある。

Toru3Toru3

あとはrustc-C target-cpu=nativeを加える。(-march=nativeと同様の効果)

Toru3Toru3

/projects/.cargo/config.toml に以下を書いて指定するのが良さそう。

[target.x86_64-unknown-linux-gnu]
rustflags = ["-Ctarget-cpu=native"]
Toru3Toru3

安定である必要がない場合sortよりsort_unstableの方が速い。
(本当はsort_stablesortという名前の方が良かったのではないかと思うが、安定でないソートを後から加えたためこういう命名になっているのだと思われる。)

Toru3Toru3

インラインアセンブラを使いたい場合はasm!を使う。(要nightly)

Toru3Toru3

ポータブルなSIMDは、昔はstdsimdという名前だったが、portable-simdで開発されている。
(再びstableに入るのはいつになるんだろう)

Toru3Toru3

C, C++同様にperfでプロファイルが取れる。