- PR -

マルチモジュールアセンブリの効果

1
投稿者投稿内容
masa
大ベテラン
会議室デビュー日: 2004/10/28
投稿数: 161
投稿日時: 2005-01-17 09:10
現在、汎用ライブラリを作成しているところなのですが、
起動時の必要リソース量を少しでも減らせないかという目的で
マルチモジュールアセンブリの検証をしています。

DLLを構成しているソースを名前空間レベルでざっくりとモジュール分割してみたのですが、
VisualStudio.NETでコンパイルしたシングルモジュールのDLLと
起動時のメモリ消費量はほとんど変わりませんでした。

検証しているDLLのサイズ自体が200KB程度で
それほど大きくないために効果がみられないのでしょうか。
それとも、効果はメモリ使用量ではなく別の面で現れてくるのでしょうか。
菊池
会議室デビュー日: 2004/11/15
投稿数: 19
投稿日時: 2005-01-18 00:49
 起動時に消費される空間は殆どがマニフェストとランタイム(CLR自身)によるものです。
 マルチモジュールアセンブリを作ってもマニフェストは1個でサイズが変わらないのでメモリ消費にも影響が出ません。
 マルチモジュールアセンブリのメリットは複数言語で一つのアセンブリを開発できるとか、相互運用の部分ではありますが実行時のリソース消費量の低減等の効果は無いと考えた方が良いと思います。
 複数のアセンブリに分割して AppDomain にアセンブリを必要になるまでロードしないとかそういう事をするとマニフェストのサイズは押さえられ、起動時のリソース消費は下がりますが、逆にコードを100%使うようなシナリオではリソース消費が増えてしまいます。
 一長一短はありますが、起動時に必要リソースな消費を抑えるにはアセンブリを分割し、参照設定でなくAppDomain.Loadでアセンブリを取り込むのがいいでしょう。
masa
大ベテラン
会議室デビュー日: 2004/10/28
投稿数: 161
投稿日時: 2005-01-18 09:02
菊地さん、ありがとうございます。

やはりリソース面での劇的な効果はあまり見込めないんですね。
マニフェスト自体は小さいものだと思いこんでいたので、効果が見込めると思ったんですが。

確かに効果があるなら、Frameworkの標準DLLもマルチアセンブリになっていてもおかしくないんですよね。
でも、勉強になりました。

AppDomain はリモート関係の記事で読んだことがあります。
一案として検討してみたいと思います。
1

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