Node.js* の JavaScript* コードのプロファイル

インテル® VTune™ プロファイラー

この記事は、インテル® デベロッパー・ゾーンに公開されている『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 のサポートを有効にする

  1. Node.js* のソース (nightly build) をダウンロードします。
  2. ルートの 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 を使用してこのアプリケーションをプロファイルするには、次の操作を行います。

  1. インテル® VTune™ Amplifier を起動します。
    amplxe-gui.exe
  2. ツールバーの [New Project (新規プロジェクト)] アイコンをクリックして新規プロジェクトを作成します。
  3. [Analysis Target (解析ターゲット)] タブで、[Application (アプリケーション)] フィールドに node.exe[Application parameters (アプリケーションのパラメーター)] フィールドに sample.js を指定します。

  4. [Analysis Type (解析タイプ)] タブに切り替えて、左ペインから [Advanced Hotspots (高度な hotspot)] 解析タイプを選択し、[Start (開始)] をクリックして解析を実行します。


    高度な hotspot 解析は、インテル® VTune™ Amplifier 2019 で汎用の hotspot 解析に統合されました。ハードウェア・イベントベース・サンプリング収集モードで利用できます。

解析が完了すると、インテル® VTune™ Amplifier はデフォルトの [Hotspots (Hotspot)] ビューポイントに結果を表示します。[Bottom-up (ボトムアップ)] ウィンドウを使用して、サンプルが JavaScript* 関数にどのように分散されているか調べます。最も CPU 時間がかかっている関数をダブルクリックしてソースコードを表示し、最もホットなコード行を特定します。

インテル® VTune™ プロファイラー・パフォーマンス解析クックブックのトップに戻る

タイトルとURLをコピーしました