Linkers and Loadersの本では、実行可能ファイルが別のコードセクションを持つ理由の1つは、コードセクションを読み取り専用ページに保存できることで、パフォーマンスが向上することです。現代のOSでこれは本当ですか? Just in Time compilersがオンザフライでコードを生成しているのを見ると、書き込み可能なページが必要だと思います。これは、JITで生成されたコードが常に比較結果でパフォーマンスヒットを受けることを意味しますか?もしそうなら、どれくらいヒットしますか?書き込み可能なページのためJITパフォーマンスが低下しますか?
答えて
メモリ管理の効果(他の回答で説明されています)は、現在の命令ストリームが変更され、パイプラインの中間結果が破棄され、新しいコードが必要であるかどうかを継続的に確認する必要はありません読まれる。 jitコンパイルの場合、このシナリオは、コンパイラの設計、CPUパイプラインの深さ、CPU上のコードキャッシュのサイズ、およびそのコードを変更する可能性のある他のCPUの数によって頻繁に発生することがあります。コードが書き込み可能なページに生成され、その後実行可能かつ読み取り専用とマークされたうまく設計された最新のシステムでは、通常は許可されません。これはもちろんジットに固有のことではありません。それはあらゆる種類の自己修正コードで起こる可能性があります。
メモリ内のコードが実行可能プログラムによって直接サポートされていないため、ある種のヒットが発生するはずです。そのため、単に破棄するのではなくページアウトする必要があります。言いましたが、さまざまな形式のリンクでは、通常のコードページが汚れてしまい、ディスクイメージと同じ結果が得られなくなってしまいます。これは大きな問題ではありません。
パフォーマンスの向上は、ページが読み取り専用かどうかによって異なります。利点は、読み取り専用ページをプロセス間で共有できるため、より少ないメモリ(L1/L2/L3キャッシュと極端な場合はディスクの両方)のスワップを意味します。
JITは、不必要にJITするのではなく、ホット機能をJITするだけでこれを緩和しようとします。これは、ホット機能の数が比較的少ないため、わずかなメモリの増加しかもたらさない。
JITコンパイラはスマートで、JITtingの結果をキャッシュして(理論的に)共有できるようにすることもできます。しかし、これが実際に行われたかどうかはわかりません。
.NETです。NGENで。 –
- 1. Cassandraの書き込みパフォーマンスが低い
- 2. ログの書き込みが多すぎるとAndroidアプリケーションのパフォーマンスが低下しますか?
- 3. JavaScriptのインラインイベントによってWebページの読み込みパフォーマンスが低下しますか?
- 4. ウェブアプリケーションの32ビットのみのDLLでパフォーマンスが低下する可能性がありますか?
- 5. C++スタイルのキャストからパフォーマンスが低下しましたか?
- 6. PowerShellスクリプトのファイル読み込みのパフォーマンスが低すぎます
- 7. Bouncycastle AES 256 JITのためにマルチスレッドの復号速度が低下する
- 8. Wordpressは.htaccessファイルは書き込み不可能ですが、書き込み可能です。
- 9. ListAdapter.getView()を同期させるためにパフォーマンスが低下しますか?
- 10. ブラウザのJavaScriptで同時読み込み/書き込み読み書きの衝突が可能ですか?
- 11. TensorFlowは単純なネットワークではパフォーマンスが低下しますか?
- 12. 書き込み集中型アプリケーションのMongoDBのパフォーマンスが異常に低い
- 13. BCryptパフォーマンス低下
- 14. Spark Cassandra書き込みパフォーマンス
- 15. 再利用可能なコードを書き込むためのベストプラクティス
- 16. C#大きなViewState名を使用すると、パフォーマンスが低下しますか?
- 17. EventHub書き込みのためのSASトークンが機能しない
- 18. 入力の検証のために読み込み可能なif文を書き込む方法は?
- 19. Everyoneが書き込み可能なWin32レジストリキー?
- 20. 書き込み可能なVirtualPathProviderのようなものはありますか?
- 21. CoreBlueTooth:データが書き込み可能な特性に書き込まれてもエラーが発生する
- 22. Netty 4パフォーマンス低下
- 23. SQLクエリのUnicode文字が原因でDBのパフォーマンスが低下する可能性がありますか?
- 24. ログファイルに書き込むと書き込み競合が発生する可能性がありますか?
- 25. 精度が低下する可能性はありますか?
- 26. OpenGLではプログラムのパフォーマンスが低下しますか?
- 27. AndroidでORMLiteのパフォーマンスが低下していますか?
- 28. 接続のパフォーマンスが低下しますか?
- 29. Railsにログインすると、パフォーマンスが低下しますか?
- 30. Javaクラスをオーバーライドするとパフォーマンスが低下しますか?
実行時に読み取り専用ページを変更することは考えていませんでした。どのように通常それを行うのですか?私はLinux上で特にシステムコールを見ることは思い出せません。 –
セキュリティ上の理由からだけ.NETがページをR/Oとしてマークしていることは間違いありません。 –
システムコールはmprotectであり、POSIXの一部です。 –