■

mono-jp wikiでFirebird.NETはmonoには含まれていない、みたいなことを書いた途端にmcsにチェックインされちまいました…何だ?もしかして読んでるのか?
マルチモジュールアセンブリは本当にパフォーマンスを改善させるか?
monoのハッカー専用MLでまたサイドバイサイドの話が出ていたので、@ITの例の連載を頭から読み直していて気付いた。マルチモジュールアセンブリにすると、使用するモジュールの分だけメモリにロードされるのではないか。さっそくIRCで聞いてみたら、Paoloが教えてくれた。
「うちのランタイムはマルチモジュールアセンブリを読むときは、モジュール単位で読むのかなあ?」
「モジュールは遅延読み込みするよ。」
「ってことは、クラスライブラリを分割したら、メモリの節約になるかなあ?」
「いや。巨大なアセンブリだからといって、小さなアセンブリよりそんなに大きなメモリを消費することにはならない。アセンブリが増えても、メモリを無駄に食うだけだ。」
「ええと、アセンブリじゃなくてモジュールの話なんだけど…モジュールが増えれば、メモリを無駄に食うだけだ、っていうこと?」
「それぞれについて、ディスク上のサイズとは無関係にだいたい50KBくらい必要になるね。」
「うーん、ちょっと確認させて。じゃあ、もし、頻繁に使うモジュールと、滅多に使わないモジュールを分けたとき、後者がロードされることが無ければ、ロード自体は高速化されるんだよね?」
「基本的には、ロードされなければ何のアドバンテージもないし、ロードされたらメモリの無駄だよ。」
うーん、そうなのか。そういうもんなのか。MS.NETではどうなんだろう。
今さらですが
著作権の保護期間延長に賛成する人は、社会的にぶっ殺しますので、ここのコメント欄で名乗り出て下さい。
コメント
ladybug — 01/21/2005 04:54:11
マルチモジュールアセンブリが効果を発揮するのは、モジュールファイルの入手コストが高いときなんかじゃないでしょうか?
MSの実装でも、すでにディスク上にあって、いつでもロードできるような状態なら、ロードされていないモジュール↑のクラスとロードされていて未使用のクラスに大きな差異があるとは思えません。
でも、「コストが高い場所に配置されているモジュールを参照したときに読み込む」よりも、起動時やセットアップ時などの、ユーザが待つことになれた場面で丸ごと全部ロードしておくほうが現実的kで、それはシングルモジュールアセンブリで十分だったりします。
ladybug — 01/21/2005 04:56:31
ブラウザで動画みてるときみたいなかんじで、モジュールのロードや JIT コンパイルが、未使用の範囲に対して余剰CPUや余剰帯域で行われるような仕組みがあると面白いかもしれませんが、すでにあるかなぁ…
atsushieno — 01/21/2005 05:16:08
あ、それ、とても説得力ありますね。もともと.NETって、ネットワーク越しの実行なんかを目指していたわけですしね。で、
丸ごと全部ロードしておくほうが現実的
にかなり納得してしまったので、
ブラウザで動画みてるときみたいな感じで
これは現実的にはいらないかな?っていう気がしました(^^;
atsushieno — 01/23/2005 12:47:01
何だよ匿名じゃねえか。消えろボケ。
atsushieno — 01/29/2005 08:05:54
うっといゴミがいたのでデリった。