C#アプリケーションのプロファイリング中に、私は 'ThePreStub'というシステム(?)メソッドでかなりのCPU使用量を見ます。これは何ですか?C#プログラムでThePreStubとは何ですか?
14
A
答えて
16
参照:クロスアセンブリ参照:CLR Inside out - The Performance Benefits of NGen.
NGENコンパイルされたコードのスループットは一つの理由のために主にJITコンパイル コードのそれよりも低いです。 JITコンパイルされたコードでは、これらの参照の正確なアドレス が実行時にわかるので、クロスアセンブリ参照は 直接呼び出しまたはジャンプとして実装できます。静的にコンパイルされたコードの場合はですが、 クロスアセンブリリファレンスは、 プリスタブを実行することで、実行時に に正しいアドレスが格納されるジャンプスロットを経由する必要があります。メソッドプレスタブは、とりわけ、そのメソッドによって参照されるアセンブリのネイティブイメージが のアセンブリに確実にロードされ、メソッドが実行される前にメモリに がロードされます。プリスタブは、最初にメソッドが呼び出されたときに実行する必要があるのは です。それ以降の呼び出しのために短絡されたのは です。ただし、 メソッドが呼び出されるたびに、クロスアセンブリ参照は レベルの間接参照を経由する必要があります。これは、主に、NGJITコンパイルコードと比較した場合、NGenコンパイルコードのスループットが5-10 パーセント低下したことを主な原因としています。
関連する問題
- 1. Cプログラムでは0xFEは何を意味しますか?下記のプログラムで
- 2. C#ではString *とは何ですか?
- 3. `printf`の%* c%* cとは何ですか?
- 4. C#でCreateNewAttributeとは何ですか?
- 5. C =で '=>'とは何ですか?
- 6. C#で "var"とは何ですか?
- 7. C++で_In_とは何ですか?
- 8. C++でvoidポインタとは何ですか?
- 9. xtreeはVisual C++とは何ですか?
- 10. Cの「プライベートヘッダ」とは何ですか?
- 11. SDKとは何ですか? (C++)
- 12. MATLAB C API:mxDestroyArray(NULL)とは何ですか?
- 13. C++の「リテラル」とは何ですか?
- 14. Objective-CのretainCountとは何ですか?
- 15. C++のハンドルとは何ですか?
- 16. c:\ programのトリックとは何ですか?
- 17. C#「?」とは何ですか?オペレータ
- 18. Guid.NewGuid()のC++バージョンとは何ですか?
- 19. Cのビットマップとは何ですか?
- 20. pro * cとは何ですか?
- 21. Objective-Cの "カテゴリ"とは何ですか?
- 22. Objective-Cの "@private"とは何ですか?
- 23. C++/CLIのプロパティとは何ですか?
- 24. 「ポータブルC++」とは何ですか?
- 25. C++ " - >"とは何ですか?
- 26. C#のArccosメソッドとは何ですか?
- 27. objective-cのメッセージとは何ですか?
- 28. C++プログラムでclを使ってビルドするのは何ですか?
- 29. このJavaプログラムは何ですか
- 30. このプログラムのフローは何ですか?
あなたが試したもの、見つけたもの、その情報が十分でない理由を示してください。 "ThePreStub"の最初のいくつかのWeb検索結果では、CLRがどのように動作するかについて**多くの**説明があります。 – CodeCaster
@コードキャスター - あなたのコメントに続いて、私は実験を行い、 "ThePreStub"のための* Google *があれば、多くの良い情報を得ることがわかりました。残念ながら、私はもともとBingをデフォルトプロバイダとしてWindows VMを検索しようとしていましたが、実際には何も見つかりませんでした。学んだ教訓。 – Eric