この記事は、インテル® デベロッパー・ゾーンに公開されている『Intel® VTune™ Profiler Performance Analysis Cookbook』の「Profiling JavaScript* Code in Node.js*」日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
このレシピは、Node.js* をリビルドし、インテル® VTune™ Amplifier を使用して、JavaScript* フレームとネイティブフレーム (ネイティブコード、例えば、JavaScript* コードから呼び出されたシステム・ライブラリーやネイティブ・ライブラリー) から成る混在モードのコールスタックを含む JavaScript* コードのパフォーマンスを解析するための設定手順を説明します。
コンテンツ・エキスパート: Denis Pravdin (英語)
使用するもの
以下は、パフォーマンス解析シナリオで使用するハードウェアとソフトウェアのリストです。
- アプリケーション: sample.js。このアプリケーションはデモ用であり、ダウンロードすることはできません。
- JavaScript* 環境: Node.js* 8.0.0、Chrome* V8 5.8.283.41
- パフォーマンス解析ツール: インテル® VTune™ Amplifier 2018: 高度な hotspot 解析
注
- インテル® VTune™ プロファイラー評価版のダウンロードと製品サポートについては、https://www.isus.jp/intel-vtune-amplifier-xe/ を参照してください。
- このクックブックのレシピはすべてスケーラブルであり、インテル® VTune™ Amplifier 2018 以降に適用できます。バージョンにより設定がわずかに異なることがあります。
- ベータ版インテル® oneAPI ベース・ツールキット向けのバージョンから、インテル® VTune™ Amplifier の名称がインテル® VTune™ プロファイラーに変わりました。引き続き、インテル® Parallel Studio XE またはインテル® System Studio のコンポーネントとして、あるいはスタンドアロン版のインテル® VTune™ プロファイラーをご利用いただけます。
- オペレーティング・システム: Microsoft* Windows* 10
Node.js* でインテル® VTune™ Amplifier のサポートを有効にする
- Node.js* のソース (nightly build) をダウンロードします。
- ルートの node-v8.0.0 フォルダーから vcbuild.bat スクリプトを実行します。
echo vcbuild.bat enable-vtune
このスクリプトは、インテル® VTune™ プロファイラーが JavaScript* コードのプロファイルをサポートするように Node.js* をビルドします。
注
- Linux* システムでは、enable-vtune フラグと fully-static 設定フラグを同時に使用しないでください。この組み合わせは互換性がなく、Node.js* 環境がクラッシュします。
- Microsoft* Visual Studio* 2015 以降の IDE を使用する場合は、node-v8.0.0-win\deps\v8\src\third_party\vtune\vtune-jit.cc ファイルに #define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS を追加します。
#include <string.h> #ifdef WIN32 #define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS #include <hash_map> using namespace std; #else ...
Node.js* で動作している JavaScript* コードをプロファイルする
このレシピはサンプル JavaScript* アプリケーションを使用します。
function say(word) { console.log("Calculating ..."); var res = 0; for (var i = 0; i < 20000; i++) { for (var j = 0; j < 20000; j++) { res = i * j / 2; } } console.log("Done."); console.log(word); } function execute(someFunction, value) { someFunction(value); } execute(say, "Hello from Node.js!");
インテル® VTune™ Amplifier を使用してこのアプリケーションをプロファイルするには、次の操作を行います。
- インテル® VTune™ Amplifier を起動します。
amplxe-gui.exe
- ツールバーの [New Project (新規プロジェクト)] アイコンをクリックして新規プロジェクトを作成します。
- [Analysis Target (解析ターゲット)] タブで、[Application (アプリケーション)] フィールドに node.exe、[Application parameters (アプリケーションのパラメーター)] フィールドに sample.js を指定します。
- [Analysis Type (解析タイプ)] タブに切り替えて、左ペインから [Advanced Hotspots (高度な hotspot)] 解析タイプを選択し、[Start (開始)] をクリックして解析を実行します。
注
高度な hotspot 解析は、インテル® VTune™ Amplifier 2019 で汎用の hotspot 解析に統合されました。ハードウェア・イベントベース・サンプリング収集モードで利用できます。
解析が完了すると、インテル® VTune™ Amplifier はデフォルトの [Hotspots (Hotspot)] ビューポイントに結果を表示します。[Bottom-up (ボトムアップ)] ウィンドウを使用して、サンプルが JavaScript* 関数にどのように分散されているか調べます。最も CPU 時間がかかっている関数をダブルクリックしてソースコードを表示し、最もホットなコード行を特定します。