NGenのススメ ~読み込み実行の高速化~

概要

hmV8はモジュールとして「ClearScript.dll / ClearScript-32.dll」など、
最初にClearScript系を読み込みをし、プログラムが自動的に、中間言語をCPUが実行出来るネイティブイメージに変換するため、
スクリプトを実行しはじめるまでに少し時間がかかります。

実際に、hmV8.dllを利用したマクロ(EcmaScriptスクリプト)を実行すると、
少し待ち時間を体感出来るハズです。

同じスクリプトを2回目以降実行する分には、この時間は大幅に短縮されます。

NGenを利用し、待ち時間を大幅短縮

NGen(ネイティブ イメージ ジェネレーター)を利用することで、hmV8.dllが利用するClearScript.dllやClearScriptV8-32.dllの この最初の待ち時間を大幅にカットすることが出来ます。

  • 「管理者権限」でプロンプトを実行

    管理者権限でプロンプトを実行します。管理者権限であることが必須です。

  • .NET Frameworkのフォルダへと移動

    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
    
  • ClearScript.dll/ClearScriptV8-32.dllのネイティブイメージを作成

    以下のように「ngen install」のコマンドを利用して、ネイティブイメージを作成してください。
    「C:\usr\hidemaru\***.dll」の部分は、実際のあなたの秀丸のディレクトリやClearScriptの位置のパスを指定してください。

    ngen install "C:\usr\hidemaru\hmV8.dll"
    ngen install "C:\usr\hidemaru\ClearScript.dll"
    ngen install "C:\usr\hidemaru\ClearScriptV8-32.dll"
    ngen install "C:\usr\hidemaru\ClearScript.Windows.dll"
    ngen install "C:\usr\hidemaru\ClearScript.Windows.Core.dll"
    ngen install "C:\usr\hidemaru\ClearScript.Core.dll"
    ngen install "C:\usr\hidemaru\ClearScript.V8.dll"
    
  • 64bitのhmV8を利用している人は…

    もしも、x86版のhmV8.dllではなく、x64版のhmV8.dllを利用している人は、
    cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
    
    といったように、64版のFrameworkディレクトリへと移動してください
    ngen install "C:\usr\hidemaru\hmV8.dll"
    ngen install "C:\usr\hidemaru\ClearScript.dll"
    ngen install "C:\usr\hidemaru\ClearScriptV8-64.dll"
    ngen install "C:\usr\hidemaru\ClearScript.Windows.dll"
    ngen install "C:\usr\hidemaru\ClearScript.Windows.Core.dll"
    ngen install "C:\usr\hidemaru\ClearScript.Core.dll"
    ngen install "C:\usr\hidemaru\ClearScript.V8.dll"
    

    となります

hmV8関連ファイルが更新されたり、.NETのバージョンがアップすると、再度NGenする必要があります。

hmV8のファイルのいずれかを更新したり、.NET Frameworkそのものが更新された場合には、再度NGenしてください。
(動作しなくなるわけではありませんが、速度が遅い状態に戻ってしまいます)

PICTURE