.NETでは、JIT(ジャストインタイム)コンパイル手法を使用しています。つまり、まずソースコードをMSIL(中級言語)にコンパイルしてEXEを作成し、実行時にそのILを機械コードに変換します。それは正常に動作しますが、コンパイルされたコード全体がキャッシュにロードされず、何度も何度も繰り返し実行されます。私のアプリケーションは非常に時間に敏感です。何が起こっているのは、私が特定の関数を非常に頻繁に呼び出すと、do whileループを通して関数が10マイクロ秒以内に実行されるということです。しかし、同じ機能が、100ミリ秒以上の間隔の後に呼び出された場合、実行には50〜60マイクロ秒かかります。私はいくつかの特定の関数/プロシージャが常にキャッシュに残るようにしたい。誰でも案内できますか?私はこれがJITのために起きていると思います。 JITをオフにして、コードを機械語などに直接コンパイルできますか?助けてください。.NETアプリケーションでJITコンパイルをオフにすることはできますか?
0
A
答えて
3
関数が最初にJITされると、プロセスが実行されている間は決して忘れられません。それは、ILからネイティブへのコンパイルのために時間がかかる唯一の最初の呼び出しです。最悪のシナリオは、システムのRAMが不足すると、ネイティブコードがスワップアウトされる可能性があるということです。それははあなたの問題を解決することはありませんが、
あなたは、ngen
を実行し、GACにプリコンパイルされたネイティブイメージを配置することによって、JITコンパイルをスキップすることができます。 50-60マイクロ秒の時間を要するコードがタイムクリティカルな場合は、最初に.NETを使用するべきではありません.JITではなく、管理されたスレッドによっていつでも起動されるGCが原因です。
1
.NETはILを「解釈」しないため、いいえ、JITをオフにすることはできません。マシンコードにコンパイルする必要があります。これはJITterによって行われます。
できることは、あらかじめコンパイルすることです。これはngenで行われます。 http://msdn.microsoft.com/en-us/magazine/cc163610.aspx
関連する問題
- 1. JITコンパイラをオフにする
- 2. ASP.Net MVCアプリケーションのコントローラレベルでsslをオフにすることはできますか?
- 3. アプリケーションからIIS圧縮をオフにすることはできますか?
- 4. カスタムエラーをプログラムでオフにすることはできますか?
- 5. vscodeでドラッグアンドドロップをオフにすることはできますか?
- 6. .netネイティブツールチェーンをコンパイルせずに、Windowsストアにアプリケーションをアップロードすることはできますか?
- 7. JITコンパイルとダイナミックコンパイル
- 8. スクリプトからFirefox JavaScript JITを無効にすることはできますか?
- 9. 店舗を通じて配布されるiOSアプリケーションにJITを使用することはできますか?
- 10. .NETでは、定数はJIT時ではなくコンパイル時に評価されるのはなぜですか?
- 11. JITコンパイル
- 12. .NETアプリケーションのシステムサウンドを無効にすることはできますか?
- 13. NHibernateでレイジーローディングをオフにすることはできません
- 14. NantでSilverlightコントロールプロジェクトをコンパイルすることはできますか?
- 15. インラインアセンブリで保護モードをオフにすることはできますか?
- 16. Asciidoctorで構文ハイライトをオフにすることはできますか?
- 17. QML DelayButtonの点滅をプログラムでオフにすることはできますか?
- 18. iPhoneでプログラム的にGPSをオン/オフすることはできますか?
- 19. .NET 2アプリケーション内で.NET 4アプリケーションを実行できますか?
- 20. iPhoneアプリ内からローミングをオフにすることはできますか?
- 21. Javascriptからハードウェアアクセラレーションキャンバスをオフにすることはできますか?
- 22. Javaはジャストインタイムコンパイラ(JIT)か、Javaでプログラマがコンパイルしたものです。
- 23. .Net Core/Angular2を.Netサービスプロバイダでホストすることはできますか?
- 24. eclipseコンパイル時にコンパイルをオフにする
- 25. 複数のアプリケーションをサポートする.NETのロギングフレームワークで、同じローリングログファイルに書き込むことはできますか?
- 26. エミュレータの省電力機能をオフにすることはできますか?
- 27. TomCatのHot Deploymentをオフにすることはできますか?
- 28. バルサミクのスケッチの外観をオフにすることはできますか?
- 29. Matlab PARFORループをプログラムでオン/オフすることはできますか?
- 30. Android開発モードをプログラムでオン/オフすることはできますか?
JITerがどのように機能するかについてのあなたの理論はかなり間違っています。あなたはどこでこのように動作することを知りましたか?それは間違ったものを最適化し、あなたにウサギの道を導いています。いいえ、機械語に直接コンパイルすることはできません。いいえ、あなたはそれをオフにしたくありません。 –