問題タブ [ngen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
1136 参照

nsis - NSIS インストーラーから ngen を呼び出す

NSIS を使用して .Net アプリケーションを展開しています。インストール/アンインストール プロセスは正常に機能しますが、起動時のパフォーマンスを向上させるために最後の ngen ステップを追加したいと考えています。

残念ながら、Google は関連する資料を明らかにしませんでした。これまで誰もこれをやったことがないということはありそうにありません。

これが醜いハックなしではサポートできないというまれなケースでは、Linux ビルド サーバーで実行できる別のインストーラー テクノロジを喜んで使用します。(これにより、たとえば WiX が除外されます。)

何か案は?

0 投票する
1 に答える
1286 参照

asp.net - ASP.NET アプリケーションの起動が非常に遅い

ページ数が非常に少ない ASP.NET アプリケーションがあります。私が見る問題は、起動時間が非常に遅いことです。私の知る限り、ほとんどの時間は JIT に費やされています。アプリケーションをプリコンパイルしても、PerfMon で報告された #methods JIT を減らすのにあまり役に立たないようです。起動時間をさらに短縮するために何ができるか知っている人はいますか? NGEN を使用して ASP.NET アプリケーションを pre-jit する方法がないというのは本当ですか?

0 投票する
1 に答える
532 参照

.net-3.5 - NGENがハングし、特定のアセンブリで完了しない理由はありますか?

VisualStudio2008でビルドされた.NET3.5用のクラスライブラリプロジェクトがあります。

このソリューションファイルでコアアセンブリをNGENしようとすると、NGENが完了しないか、少なくとも(一晩のように)実行させようと思った時間内に完了しません。

他の誰かがこれを経験しましたか?もしそうなら、あなたはそれを解決しましたか?そして、もしあなたがそうしたら、どうやって?どのような手順を踏んだのですか?

これがNGENのバグである場合、これをMicrosoftに投稿するにはどうすればよいですか?私は接続アカウントを持っていますが、.NETクラス(どこに行くべきかを知っています)の代わりに、この特定の製品のバグレポートをどこに投稿しますか?

問題のクラスライブラリはここにあります:

問題のあるアセンブリはLVK.Coreアセンブリです。

更新:NGEN for .NET 4.0は完了しましたが、完了するまでに15分近くかかりました。

更新#2:MicrosoftConnectで問題が発生しました。

0 投票する
2 に答える
490 参照

.net - NGen の前に .NET アセンブリを正しくリベースした効果を測定するにはどうすればよいですか?

私たちのアプリケーションには多くの .NET アセンブリがあり、これまで NGen スクリプトを使用してデプロイされていなかったため、実行時に常に JIT されます。

私たちのアプリケーションは通常、ターミナル サーバーに展開されるため、Windows でコードのバイナリ イメージを共有することがおそらく現在の方法よりも最適であるため、ベース アドレスの設定とアセンブリの NGen 化を検討しています。

そこで、NGen をまったく使用せずにプログラムを実行し、[SysInternals の listdlls][1] を使用してそれぞれのサイズを見つけ、それを次のクラスのサイズ (つまり、xxxx --> 10000) に増やしました。次に、すべてのアセンブリのメモリ リストをレイアウトし、それらすべてのベース アドレスを調整しました。

これまでのところlistdlls、実行時にアセンブリがリベースされていないことがわかりました。

しかし、2 つのインスタンス間で実際に共有されているメモリの量を測定するにはどうすればよいでしょうか? 基本的に、アセンブリで NGEN を実行せずにプログラムの 2 つのインスタンスを開始し、NGEN を実行した後にもう一度実行するとします。

実際の効果を見つけるには、どのような数値をどのツールから見ればよいでしょうか?

たとえば、アセンブリをリベースする行為自体が、使用しているサード パーティのアセンブリ (たとえば、DevExpress コンポーネント) を移動させて、突然リベースしなければならなくなり、すべてがウォッシュになるという事実を認識しています。

では、どこからどの数字を読むのでしょうか? 同様に、タスク マネージャーのワーキング セットを使用しますか? プライベートメモリー?コミットサイズ?前後にメモリを解放しますか?

何かアドバイス?

0 投票する
1 に答える
301 参照

.net - VS2010 プロファイラーは、ngen 化されたイメージからシンボルを解決しないようです

「サンプリング」モードでアタッチして、Windows サービスをプロファイリングしています。

[System.Runtime.Serialization.ni.dll]結果ファイルの「関数」ビューを開くと、このアセンブリ内の具体的な .net 関数を示すことなく、「最もホットな」関数が表示されていることがわかります。

ngen'd アセンブリ (.ni.dll) の他のすべてのシンボルが同じように表示されるようです。また、管理されているが ngen されていないアセンブリのシンボルがリストに表示されません。これは非常に奇妙です

ただし、「AwareLock::Contention(int)」などのネイティブ シンボルはすべて問題なく解決されます。

また、[出力] タブには次のように表示されます。

また、 vsperfclrenv は起動していませんが、同時実行プロファイリング モードではすべて問題なく解決されるため、VS2010 がすべて実行してくれるので、vsperfclrenv は必要ないと考えました。

走ってみましngen update /debug /profileたが変わりませんでした。

VS2010 のサンプリング プロファイラーがこれらのマネージ アセンブリ内のシンボルを解決するように環境をセットアップするにはどうすればよいですか?

その間、私はそれらを試してみngen uninstallます。

0 投票する
3 に答える
1047 参照

.net - ngenは、コードの実行時に.NET Frameworkをインストールする必要のないバイナリに.NETコードをコンパイルするために使用されますか?

CLRに関するウィキペディアの記事の次の段落を読みました。

または、ネイティブイメージジェネレーター(NGEN)を使用して、実行前に別の手順でCILコードをネイティブコードにコンパイルすることもできます。これにより、CILからネイティブへのコンパイルが不要になるため、ソフトウェアの以降のすべての実行が高速化されます。

これは、任意の.NETプログラムを取得してバイナリにコンパイルし、.NET Frameworkがインストールされていないマシンで実行できることを意味しますか?

0 投票する
3 に答える
1918 参照

c# - .NETアプリケーションをNGENすることで、リバースエンジニアリングからアプリケーションを保護できますか?そうでない場合、いつ使用しますか?

Ngenが私のアプリケーションを保護しない場合、私のキャリアでこのアプリケーションを使用することを合理的に期待できるのはいつですか?

0 投票する
3 に答える
725 参照

.net - NGEN がコードをリベースする (パフォーマンスに悪影響を与える) のを防ぐにはどうすればよいですか?

.NET ベースのクライアント側アプリを高速化したいだけで、コードを NGEN 化することを検討しています。

Jeffery Richterは、 ngening コードに関する次の警告を書きました。

•ロード時のパフォーマンスの低下 (リベース)。Windows は、NGend ファイルをロードするときに、ファイルが優先ベース アドレスにロードされているかどうかを確認します。ファイルが優先ベース アドレスにロードできない場合、Windows はファイルを再配置し、すべてのメモリ アドレス参照を修正します。Windows はファイル全体をメモリにロードし、ファイル内のさまざまなバイトを変更する必要があるため、これには非常に時間がかかります。リベースの詳細については、私の著書『Programming Applications for Microsoft Windows, 4th Edition』(Microsoft Press) を参照してください。

このトピックについてあまり知らないので、プロジェクト内の設定を変更する前に何を知っておくべきですか? また、どの設定を変更する必要がありますか?

0 投票する
1 に答える
315 参照

xslt - プリコンパイルされたXSLT、ReBase、およびNGEN

ここで高度なパフォーマンスの質問。これが私のシナリオです:

何千ものXSLTドキュメントを含むデータベースがあります。Webサイトのページごとに1つあるため、これらはXMLをHTMLに変換します。ASP.NET Webサーバー(ファーム)は、データベースからXSLTドキュメントをロードし、それらを使用して各Web要求のHTMLをレンダリングします。

XslCompiledTransformを使用し、データベースの更新の合間に(30分ごとに)キャッシュするという最適化を実装しました。xsltc.exeを使用してXSLTをDLLにプリコンパイルすることにより、パフォーマンスをさらに向上させたいと考えています。これにより、XslCompiledTransformが作成するすべての動的メソッド呼び出しが排除されるはずです。

そのため、XSLTをファイルに書き込み、xsltc.exeを使用してそれらを実行する別のサーバーがあります。約20分かかりますが、大丈夫です。次に、DLLを各Webサーバーにドロップします。これで、必要に応じてWebサーバーにDLLを動的にロードさせることができます。アセンブリをXslCompiledTransformにロードするために使用しているコードは次のとおりです。

ディレクトリ内のDLLをReBase.exeまたはNGEN.exeしますか?ReBaseには約5分かかり、/ queueを使用したNGEN.exeには約10分かかります。その間、CPUが激しく攻撃され、Webサーバーのトラフィックサービス機能に影響を与える可能性があります。アセンブリからバイトを読み取ることによってアセンブリをロードする方法を考えると、ネイティブNGENイメージも参照されますか、それともJITが起動しますか?

これに対するすべての/すべての洞察は大いに感謝されます!

マルコム

0 投票する
1 に答える
682 参照

.net - ドメインの中立性を指定せずに、.netネイティブイメージ(NGEN)を複数のアプリドメインにロードするにはどうすればよいですか?

NGEN+AppDomainの問題はここにあります。

.netアプリケーションでのひどいJIT時間を防ぐために、ネイティブイメージを正しくロードすることを中心に展開するいくつかのアプリケーションの変更に取り組んでいます。一部のパーツは簡単でしたが、アプリドメインにロードする必要のあるアセンブリ(アプリはさまざまな理由で使用する必要があります)は、最初にネイティブイメージをロードし、その後のロード(現在は新しいアプリドメイン)でのみロードします画像は拒否され、JITが発生します。

私はドメイン中立の読み込みについてすべて知っており、それが理にかなっているいくつかのアセンブリですでにそれを利用していますが、ドメイン中立の読み込みを行うと、最初にアプリドメインを使用する主な理由の1つがキャンセルされます-ドメインニュートラルイメージはアンロードできないためです。

簡潔に言えば、ネイティブイメージのロードとアセンブリのアンロードを行う方法が必要です。ネイティブイメージを最初にアンロードしてから再度ロードする限り、通常の制限が適用されないことを期待していましたが、ネイティブイメージを同時にロードしようとした場合と同じように、拒否されました。

このMSDNの記事には、次の引用が含まれています。

JITコンパイルにフォールバックする別のアプローチは、対応するアセンブリをドメイン固有としてロードするすべてのAppDomainにネイティブイメージの異なるコピーをロードすることです。ただし、このアプローチでは、最初のイメージを除くNGenイメージのすべてのコピーを、優先ベースアドレスとは異なるアドレスにロードする必要があります。したがって、NGenイメージのこれらのコピーはすべて、アドレスを修正する必要があります。

これは私のニーズにぴったりですが、その記事は私が今までに言及した唯一の場所であり、それがどのように実装されるかはわかりません。

洞察を事前に感謝し、見てくれてありがとう。