以前、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