-1

これを例にとると:

私は20の構造体を持っています。構造体のすべてのフィールドに直接アクセスし、それらから値を取得したり、他のサブ構造体へのポインターを取得したりします。

ここで、プログラムを再構成します。構造体のフィールドに直接アクセスする代わりに、すべての構造体をそれぞれのクラスにカプセル化し、可能なすべての get() および set(x) の関数を用意しました。

質問: 構造体に直接アクセスする代わりに、メソッド/関数を使用するとパフォーマンスに影響がありますか?

なんらかの推定 % は素晴らしいものであり、何らかの説明でもあります。

4

2 に答える 2

3

一般に、getter と setter がクラス内でインラインで定義されている場合、パフォーマンスに違いはありません。ほぼすべての最新のコンパイラでは、関数呼び出しはインラインで展開されるため、オーバーヘッドは発生しません。これは、多くの場合、さまざまな小さなインライン関数に当てはまります。(たとえば、http://www.gotw.ca/publications/mill18.htmを参照してください。ここでは、Herb Sutter が、ほとんど/すべての仮想関数を非公開にしても、結果のコードにオーバーヘッドが追加されない理由について説明しています。)

クラスで関数をインラインで定義する場合、定義が変更された場合、クライアント コードを再コンパイルする必要があることに注意してください。ただし、これはヘッダー ファイルのほとんど/すべての変更に適用されます。

于 2013-01-05T02:45:50.253 に答える
-1

構造体とクラスのパフォーマンスに大きな違いがあるとは聞いたことがありません。以下のこれらのページをグーグルで検索しましたが、パフォーマンスに関しては違いはないはずです. http://www.gamedev.net/topic/115725-is-a-struct-faster-than-a-class/ http://forums.codeguru.com/showthread.php?332571-Struct-vs-Class

于 2013-01-05T02:17:21.540 に答える