2012-07-11 6 views
7

私が必要とするプロパティを含む大きなオブジェクトと、さらにいくつかのメソッドといくつかの大きなコレクションがあるとします。大きな既存のオブジェクトを渡すか小さなオブジェクトを作成して渡す

私は、すでに存在するこの大きなオブジェクトを引数として渡すか、それとも必要なプロパティだけを含む小さなオブジェクトを作成して渡すかを知りたいと思います。

答えて

14

メソッドの引数として渡すだけの場合は、 "ビッグ"オブジェクトを渡すことは "安く"です - オブジェクト参照のコピーを渡すだけです。これはポインタのサイズです(オブジェクトが構造体型でない場合は、 "オブジェクト"全体がスタックにコピーされます)。新しいオブジェクトを作成する場合は、たとえそれが小さくても、プロパティの割り当てとコピーのコストを支払うことになります。これは、「大きな」オブジェクトを渡す場合には必要ありません。

シリアル化(つまり、アプリケーション間、Webサービスの呼び出しなど)する必要がある場合は、小さなオブジェクト(基本的にDTO、データ転送オブジェクト)が好ましい。

+0

Thank youou Carlos。それは知って良いです。 – Steve

2

参照渡しする限り、それは問題ではありません。したがって、複雑さを増やすべきではありません。実際には、コンテナオブジェクトも作成する必要があるため、マシンのコストが高くなります。

あなたはパフォーマンスに関心があるようですが、ポインタとメモリ管理がCでどのように動作するかを学ぶことをお勧めします。理解すれば、上位レベルの言語で抽象化されたバージョンがパフォーマンスにどのように影響するかを理解する時間がはるかに短縮されます。

関連する問題