V8 による Chromium のプロファイル

V8 の CPU とヒーププロファイラ は V8 シェルからは簡単に使用できますが、Chromium では使用方法がわかりにくい場合があります。このページは、お手伝いするためにあります。

なぜ V8 のプロファイラを Chromium で使用する場合と V8 シェルで使用する場合は異なるのですか? #

Chromium は V8 シェルとは異なり、複雑なアプリケーションです。プロファイラ使用に影響を与える Chromium 機能を以下に示します。

CPU プロファイルを取得するために Chromium を実行する方法 #

プロセスの開始から CPU プロファイルを取得するために Chromium を実行する方法を以下に示します。

./Chromium --no-sandbox --user-data-dir=`mktemp -d` --incognito --js-flags='--prof'

すべてのデータが開発者ツールではなくファイルに記録されるので、開発者ツールにプロファイルが表示されないことに注意してください。

フラグの説明 #

--no-sandbox はレンダラーのサンドボックスを無効にして、chrome がログファイルに書き込めるようにします。

--user-data-dir は新しいプロファイルを作成するために使用され、インストールされた拡張機能からキャッシュや潜在的な副作用を回避するために使用します (オプション)。

--incognito は、結果の汚染をさらに防ぐために使用されます (オプション)。

--js-flags には V8 に渡されるフラグが含まれています。

Android #

Android の Chrome には、プロファイルを作成するのを少し複雑にするいくつかの独自のポイントがあります。

次のコマンドは Android でプロファイリングを有効にします。

./build/android/adb_chrome_public_command_line --no-sandbox --single-process --js-flags='--logfile=/storage/emulated/0/Download/%t.log,--prof'
<Close and relaunch Chome on the Android device>
adb pull /storage/emulated/0/Download/<logfile>
./src/v8/tools/linux-tick-processor --apk-embedded-library=out/Release/lib.unstripped/libchrome.so --preprocess <logfile>

メモ #

Windows では、chrome.exe ではなく chrome.dll に対して .MAP ファイルの作成をオンにするようにしてください。