Rustのプロジェクトでボトルネックを探し出す
#cargo-profiler #Rust #speed #速度 #プロファイル #パフォーマンス
κeenさんの記事通りでできる。
基本的にほとんどの部分が以下の記事から引用になっている。
やり方 - Macでもできる
cargo-profilerを使う。
cargo-profilerの公式READMEでも上記の記事でもvalgrindをapt経由でインストールしている。ただUbuntuとかでなくても、Macでもbrewでインストールしたものが使えた。Macでも使えたってことがこのページを書く動機。
code:bash
# valgrindをインストール
# (メモリ関連のツール)
brew install valgrind
# cargo-profiler
cargo install cargo-profiler
以下で上位10件実行時間がかかっている関数を一覧できる。上記の記事内に具体的な出力がある。
code:bash
cd 自分のプロジェクト
cargo build --release
cargo profiler callgrind --bin ./target/release/自分のバイナリ -n 10
その他、上記の記事内ではキャッシュミスを表示させたりの例が紹介されている。
Ubuntuとの違い
Ubuntu(正確にはrust:1.35のDocker内)だと関数名(メソッド名)まで表示された。
ただ、Macでやるとモジュール名しか表示されない感じ。