質問

アプリで幻の遅延が発生しました。これは、オブジェクトが初めてタッチされ、JITのせいにされたときのシングルトンの初期化に由来します。 JITを測定するメカニズムがない(または存在する)ので、遅延に7秒かかったため、私はこれにまったく納得していません。 7秒間のJIT?!?それは本当ですか?

どちらの方法でも、簡単に測定できないものを非難するのは困難です。しばらく前にこの問題を一目見たとき、私は大量のコードをコメントアウトし、7秒の遅延<!> quot; jump <!> quot;を見ました。アプリの他の場所。どこかでバックグラウンドプロセスで何らかの形で起こっていることを示唆しています(そして、これはJITを潜在的な原因としてカウントするでしょう)

楽しみのために、たまたま他の多くのオブジェクトを参照する静的オブジェクトがあった場合、JITにかかる時間の経験則はありますか? JITについてもっと理解できるように他に参照先がありますか?JITがこの速度低下の原因であるかどうかを知るチャンスがあるのですか?

役に立ちましたか?

解決

テンプレート化されたコレクション内のテンプレート化されたアイテムに関連する奇妙なバグで、JITが非常に長い時間(1秒を超える)しかかかっていないのを見たことがあります(以下の編集を参照)。

とにかく、あなたがそれを見るという事実<!> quot; move <!> quot;それはおそらく問題ではないことを私に間違いなく示しています。これを決定的に決定するために、RPMを使用して、遅延の直前と直後に何が起こっているのかを確認します。

予想されるJIT時間は、非常に曖昧なものです。これには、多くの要因が影響する可能性があるためです。プロセッサの速度は明らかですが、アプリのストレージメディアやデバイスのメモリ負荷などはそれほど明白ではありません。

ストレージメディアはJIT速度に影響を与える可能性があります。これは、JITterがJITを必要とするときにメディアからILをプルする必要があり、プルが遅い場合、JITが遅くなるためです。

メモリのプレッシャーは厳しいものであり、CEデバイスに深刻な影響を与える可能性があります。ここでの問題は、メモリが不足し始めると、EEがコレクション中にJITtedコードのピッチングを開始することです-呼び出しスタック以外はすべてです。これで、たとえば、何らかのワーカーやヘルパーを呼び出したり、スレッドを実行したりするルーチンにいる場合、そのヘルパーメソッドは、ピッチ、JITted、ピッチJITtedなどを取得できます。これは<と呼ばれます。 !> quot; thrash。<!> quot;

RPMで後者を特定するのはかなり簡単です(修正はそれほど簡単ではないかもしれません)。頻繁に上げるためにピッチされたコードの量を見て、ピッチ数の増加と知覚されるロックアップとの間に強い相関関係を探します。

編集:やっとバグの説明はこちら

他のヒント

JIT(およびGC)タイマーなどはここにあります:

.NET Compact Frameworkのパフォーマンスカウンター ( http://msdn.microsoft.com/en-us/library/ms172525 .aspx

.NET Compact Frameworkでのアプリケーションパフォーマンスの監視パートI-パフォーマンスカウンターの有効化( http://blogs.msdn.com/davidklinems/archive/2005/10/04/476988.aspx

.Net Compact Frameworkリモートパフォーマンスモニターを使用したデバイスアプリケーションパフォーマンスの分析( http://blogs.msdn.com/stevenpr/archive/2006/04/17/577636.aspx

.NET Frameworkのパフォーマンスカウンター
http://msdn.microsoft.com/en- us / library / w8f5kw2e(VS.80).aspx

よろしく、 タンバーグ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top