遅い、メモリ食い、の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) {} };
と書くと、コピーコンストラクタ一回で処理が完了する。