ものがたり(旧)

atsushieno.hatenablog.com に続く

マルチモジュールアセンブリは本当にパフォーマンスを改善させるか?

monoのハッカー専用MLでまたサイドバイサイドの話が出ていたので、@ITの例の連載を頭から読み直していて気付いた。マルチモジュールアセンブリにすると、使用するモジュールの分だけメモリにロードされるのではないか。さっそくIRCで聞いてみたら、Paoloが教えてくれた。


「うちのランタイムはマルチモジュールアセンブリを読むときは、モジュール単位で読むのかなあ?」
「モジュールは遅延読み込みするよ。」
「ってことは、クラスライブラリを分割したら、メモリの節約になるかなあ?」
「いや。巨大なアセンブリだからといって、小さなアセンブリよりそんなに大きなメモリを消費することにはならない。アセンブリが増えても、メモリを無駄に食うだけだ。」
「ええと、アセンブリじゃなくてモジュールの話なんだけど…モジュールが増えれば、メモリを無駄に食うだけだ、っていうこと?」
「それぞれについて、ディスク上のサイズとは無関係にだいたい50KBくらい必要になるね。」
「うーん、ちょっと確認させて。じゃあ、もし、頻繁に使うモジュールと、滅多に使わないモジュールを分けたとき、後者がロードされることが無ければ、ロード自体は高速化されるんだよね?」
「基本的には、ロードされなければ何のアドバンテージもないし、ロードされたらメモリの無駄だよ。」

うーん、そうなのか。そういうもんなのか。MS.NETではどうなんだろう。