array_unique
と array_flip x 2回
の速度比較をしていたのですが、マイクロベンチの類なので、普通にプロファイラーで解析してもボトルネックの比較が難しい。というわけで、FlameGraph を出してみた。結果としては、めちゃくちゃ簡単です。
※Linux使っていることが前提です。
事前準備
下記のコマンドで perf-tools
をインストールしておく。kernel のバージョンに依存するので、対応するものを都度インストールしておくのが大切。
1 | sudo apt install linux-tools-$(uname -r) linux-tools-generic |
perf の出力から、FlameGraph を作成するツールを clone しておく。リポジトリは下記。
https://github.com/brendangregg/FlameGraph
解析対象のPHPスクリプト
FlameGraph を出力したい PHP のスクリプトを書く。ご覧の通りの無限Loopです。きれいな FlameGraph を出すために、とにかくたくさん実行します。
1 |
|
FlameGraph を生成するスクリプト
基本的には、 FlameGraph のウェブサイトのトップページに書かれている使い方に即しています。めんどうなのでシェルスクリプトにしただけです。
PHPスクリプトをバックグラウンド実行して PID を取得して、そのPIDに対して perf-tools でサンプリングして、FlameGraph ツールで svg を出力します。
1 |
|