2011-06-24 24 views
6

私は、アプリケーションのネイティブイメージが.NETよりも優れているかどうかを確認するためにNGenを使用しようとしています。しかし、私は何をすべきかを考え出すのに苦労しています。ngenとプロファイリング

私のアプリケーションはMyApp.exeと呼ばれ、いくつかの依存関係のDLLがあります。

は私がVS 2010コマンドプロンプトを開いて、走っ:すべての問題を示唆しなかった

ngen install MyApp.exe /Profile 

コマンドの出力に遭遇していました。

私はEXEを試して実行するためにC:\ Windows \ assemblyに行きましたが、そこには見つかりませんでした(私はWindows 7です)。ちょっと掘り起こすと、コマンドプロンプトを使用してC:\ Windows \ assembly \ NativeImages_v4.0.30319_32を参照するように指示されました。私は最終的には私のMyApp.ni.exeを見つけようとしていましたが、もちろんエクスプローラのフォルダを開くことができませんでした。

私はプログラムを実行しようとしましたが、それは私に言った:

"C:\ WINDOWS \アセンブリ\ NativeImages_v4.0.30319_32 ... \ MyApp.ni.exeは有効なWin32アプリケーションではありません"

コマンド出力によると、アクセスが拒否されました。私はネイティブバージョンを実行できるように、私はこのプログラムを実行するにはどうすればよい

  1. は、私は2つの質問がありました。

  2. どのようにプロファイリングするのですか?エクスプローラで見ることができないので、私はVS2010プロファイラ内からそのフォルダを見つけることができないように見えます。

ありがとうございます。

+1

注NGENだけJITのステップを置き換える - 、あなたはこれが役立つかもしれないコールドスタートパフォーマンスの問題がある場合、それはまだ管理アプリケーションなどでありますほとんどの場合NGENは助けにならないでしょう。あなたのループなどを速くすることはありません。 –

+0

アプリケーション自体はかなり大きいので、もっとパフォーマンスを向上させる方法を理解しようとしています。 NGENが実際に役に立たない場合、それは完全に大丈夫ですが、私はただのデュー・ディリジェンスをしたいだけです。最初に – sohum

+0

のプロフィール(あなたのアプリ、今、NGENなし)。 *その後、(そしてその時だけ)行動する。さもなければあなたはそれをより速くするのに費やされる時間を無駄にしています。正直なところ、NGENがここで大いに役立つとは思わない。 –

答えて

1

もう少し読む必要があります。 NGENに渡されたEXEを実行するだけで、キャッシュからネイティブのものが自動的にロードされるようです。

もう1つの問題は、両方を実行できるかどうかを確認するために、/ profileと/ debugフラグの両方でngenを実行しなければならないことです。

これは問題で素敵なチュートリアルです:

http://blogs.msdn.com/b/clrcodegeneration/archive/2010/04/27/ngen-getting-started-with-ngen-in-visual-studio.aspx