並列計算のパフォーマンスも一般的なプロファイラでかなり分かることがたくさんありますが、同期処理などのオーバーヘッドを見出すのは結構難しいです。
また、ロックをもっと細かくするにせよatom型を使うにせよ、そのような同期処理を改善するのは結構手間がかかるしどちらが速いか見積りずらいことは多々あります。
そういうときに便利なのがmutrace、Mutex Profilerです。
実行ファイルと一緒に使い、mutexのロック回数、ロックの推移回数、合計待ち時間、ロックの種類などを列挙してくれます。ので改善すべきロックが一目瞭然で分かります。
$ mutrace gedit
とシンプルなコマンドで使えます。出力はこんな感じ。
mutrace: 10 most contended mutexes: Mutex # Locked Changed Cont. tot.Time[ms] avg.Time[ms] max.Time[ms] Type 35 368268 407 275 120,822 0,000 0,894 normal 5 234645 100 21 86,855 0,000 0,494 normal 26 177324 47 4 98,610 0,001 0,150 normal
(公式ページより引用)
こんな感じで出たら、35番のロックは改善した方がいいかな?って絞ることが出来るという訳です。
便利。
・参照リンク
公式ページ
mutraceのGitレポジトリ
0 件のコメント:
コメントを投稿