以前、macOS 上で Ruby のパフォーマンスを計測する で iprofiler
を使ったパフォーマンス計測方法を書いたのですが、Xcode 9 で
$ iprofiler -timeprofiler ./a.out iprofiler error: DTPerformanceSession: Authorization failure.
とエラーが出るようになってた。
よく分からないし、あきらめて instruments コマンドを使うようにした。以下のような感じで使う。
$ instruments -l 10000 -t "Time Profiler" ./a.out
iprofiler
みたいに 10 秒経過したら自動で終了しないので、必要なら -l
でリミットをミリ秒単位で指定する。-t
では計測に使用するテンプレートを指定する必要があるが、instruments -s
で表示されるものを適当に使えば良い。
$ instruments -s ... Known Templates: "Activity Monitor" "Allocations" "Blank" "Cocoa Layout" "Core Animation" "Core Data" "Counters" "Energy Log" "File Activity" "Leaks" "Metal System Trace" "Network" "SceneKit" "System Trace" "System Usage" "Time Profiler" "Zombies"
計測が終了すると /instrumentscli0.trace
のようなものが生成されるので、open
コマンドで適当に開いて内容を確認する。
$ instruments -l 10000 -t "Time Profiler" ./a.out Instruments Trace Complete: /Users/watson/tmp/instrumentscli0.trace $ open instrumentscli0.trace