Xcode 9 で iprofiler が使えなくなっていた・・・(´д`)

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