Developer Center に Gamefest のプレゼン資料があったので
気になる部分をメモしておく。
気になるところを抜き出しただけ AND 誤りもあるかも…
なので直接資料を観るのがベター。
[ Sublime C++ For Games ]
-----------------------------------------------
o VC 2005 は可変長引数マクロが使用可 (知らんかった)
o RAIIを使え(例外を利用するかどうかによる)
* RAII = リソース獲得は初期化である [参考リンク]
o 例外の性能ペナルティーは 1-5%
o コンソールでは無効にすることを考える
o デバッグモードだけで利用することを考える
o unordered_set/map は set/map より早い
o 最悪のケースにおいてだけ遅い
o node-based なコンテナ(list,map,set,multi_xx)はやめよう
o unordered_xx の方がマシ
o 関数の引数に、コンテナでなくてイタレータをとる
o インデックスの代わりにイタレータ
o shared_ptr の利用を考える
o ポインタのエイリアシング
void Add( float* dst, const float* p ) for ( int i=0; i < n; ++i ) dst = *p + 1.0;o 上記のような関数はコンパイラの最適化を阻害する
o "p" が "dst" を指すかも → ループ毎にリロード → :-(
o 仮想関数は便利だが、コストはかかる(360では特に)
o いかついコード内では使わない
o プラットフォームの区別に利用しない
o アロケーションはコスト高
o 経験則: ゲームループ内でアロケート禁止
o カスタムアロケータ導入を考えてみる
o ベクトルを struct vec { float x,y,z,w; }; ってするのはダメ
o ネイティブな型を使え
o Xbox 360 : __vector4 / XMVECTOR
o Windows : __m128 (D3DVECTOR をコアなコードに使うな)
0 件のコメント:
コメントを投稿