3

CIで記述した以前のプログラムでは、プログラム内のすべての関数からアクセスできる複数の「コア」データを含む単一のオブジェクトが必要でした。結局、を選択し、structこの構造体へのポインターを使用して読み取りました。またはデータの書き込み。ポインターへのアクセスはおそらくCで実行できる最も安価な方法の1つであり、これ以上優れたものを見つけたことがないため、このソリューションに満足しているため、高速で作業に適していました。

今C++でも同じ問題があり、いくつかのプリミティブ型で構成される状態を共有する必要があります。いわゆるPODのいずれかを使用したいと思います。これは、基本的には、を意味structしますが、今回は安全のために参照します。

この「Blob」データをプログラムで実行する必要があるとすると、参照によってアクセスされる構造体はC ++で最速のものですか?ゲッターメソッドにはどれくらいの費用がかかりますか?

4

1 に答える 1

2

ゲッターコードが(ヘッダーファイル内で)インラインである場合、コンパイラーは、出力するマシンコードで関数を呼び出す必要をなくすことができます。

例えば:

class Data
{
private:
  int number_;
public:
  int GetNumber() { return number_; }
};

コンパイラーはGetNumberの定義を確認し、それが何をするのかを理解し、GetNumber()を呼び出した場所で、それを単にnumber_に置き換えます。したがって、ゲッターを使用するのではなく、メンバーに直接アクセスすると、同等のコードが生成され、どちらも同じように実行されます。

于 2012-10-06T12:15:40.350 に答える