torutkのブログ

ソフトウェア・エンジニアのブログ

C++のパフォーマンス

遅い、メモリ食い、のC++アプリケーションがあって、どうすればよいかをあちらこちら調べている。
書籍「Game Programming Gem 2」にいくつかC++パフォーマンスについて書かれている。この書籍は
ハードカバーで12000円と少々値が張る。どうしようかな・・・。

コンストラクタの初期化リストはパフォーマンスに関わる

ということを知った。

public class Person {
    string name;
public:
    Person(string aName) { name = aName; }
};

と書くと、まず空のコンストラクタがstring型インスタンスnameのために実行され、
続いて代入演算子が実行される。string型では内部にサイズ可変のバッファを保持しているので、代入演算では単なるビットコピーではない処理が実行される。

 public class Person {
     string name;
 public:
     Person(string aName) : name(aName) {}
 };

と書くと、コピーコンストラクタ一回で処理が完了する。