@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

JITコンパイルされたモジュールの初期化

1
投稿者投稿内容
やんたん
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 63
投稿日時: 2005-01-07 14:14
現在C#でWindowsアプリを作成しております。

.NETで作成したWindowsアプリで、起動時間が問題となっており、調査の結果
CLRがILをネイティブコンパイルしているところで結構な時間をくっていることがわかりました。
そこで、下記URLの「コードはいつ JIT で処理されるのか?」
http://www.microsoft.com/japan/msdn/net/general/dotnetperftechs.asp
を参考にOS起動時にスタートアップでWindowsアプリが動くように細工したところ
CLRの処理時間を80%ほど削減することができました。

ここで疑問なのが「JITコンパイルされたモジュールはいつクリアされるのか」です。
通常、OS再起動後初めて.NETアプリを動かすと非常に起動時間がかかりますが
同様のアプリを再度実行するとかなり早く起動します。
これはJITコンパイルされたモジュールがキャッシングされて利用されているからだと思いますが
このキャッシュがクリアされるタイミングはOSが再起動されるタイミングなのでしょうか?
それとも、OSを再起動しなくても一定時間でクリアされてしまうのでしょうか。
この情報にどうしてもたどり着けなかったので、質問させて頂きます。
答えや情報ソースなどご存知の方がいらしたら、教えて頂けませんでしょうか。
よろしくお願いします。

[ メッセージ編集済み 編集者: やんたん 編集日時 2005-01-07 14:15 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-01-07 15:58
GotDotNet Japan 掲示板

姉妹スレリンク (w

_________________
じゃんぬ
  @Home  じゃんぬねっと
  @Blog   じゃんぬねっと Blog

[ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2005-03-15 19:53 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-01-07 21:37
 マルチポスト先で紹介されているスレッドで、この記事が紹介されており、その中に
引用:

JITコンパイルされたコードは、ユーザーがそのアプリケーションを終了すると破棄される。ユーザーが同じアプリケーションを間髪入れずに再度起動したとしても、JITコンパイルはもう1度行われる。


と書かれていますね。
 じゃぁ、何で2回目の起動は早いんだ?という答えが出ていませんが、ディスクキャッシュじゃないですかねぇ?ディスクから読み込むより、メモリにキャッシュしてある内容を読み込む方が早そうですから。
_________________
やんたん
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 63
投稿日時: 2005-01-09 13:06
Jittaさん、アドバイスありがとうございます。
ディスクキャッシュが2回目の起動を早くしている要因か調べてみますね。
ディスクキャッシュを小さくして(最小で512KBみたいですが)起動時間を計測してみます。結果はまたこちらに連絡させて頂きます!
菊池
会議室デビュー日: 2004/11/15
投稿数: 19
投稿日時: 2005-01-09 15:28
> マルチポスト先で紹介されているスレッドで、この記事が紹介されており、その中に

 その記事 2002/08/22 って事で .NET Framework 1.0についてではないでしょうか。
 1.1は色々なパフォーマンス面の修正が入ってます
#2.0にもそういった修正がはいってくるでしょう

 JITバイナリキャッシュがされないという結論にもってくにはソース記事の時期が
ちょっと古い気がします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-01-09 21:20
引用:

菊池さんの書き込み (2005-01-09 15:28) より:
> マルチポスト先で紹介されているスレッドで、この記事が紹介されており、その中に

 その記事 2002/08/22 って事で .NET Framework 1.0についてではないでしょうか。
 1.1は色々なパフォーマンス面の修正が入ってます
#2.0にもそういった修正がはいってくるでしょう

 JITバイナリキャッシュがされないという結論にもってくにはソース記事の時期が
ちょっと古い気がします。



みゅみゅ。では、Ver1.1用の改訂版
http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_05/idnfw11_05_04.html
_________________
1

スキルアップ/キャリアアップ(JOB@IT)