7

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

何がもっとかかるか知りたいのですが、引数としてすでに存在するこの大きなオブジェクトを渡すか、必要な少数のプロパティのみを含む小さなオブジェクトを作成してそれを渡しますか?

4

2 に答える 2

15

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

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

于 2012-07-11T03:57:59.857 に答える
2

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

パフォーマンスに関心があるようですので、Cでポインターとメモリ管理がどのように機能するかを学ぶことをお勧めします。それを理解すると、高級言語で抽象化されたバージョンがパフォーマンスにどのように影響するかを理解するのがはるかに簡単になります。

于 2012-07-11T03:59:02.900 に答える