C/C++コード最適化小手先テクニック |
はじめに。言い訳。 C/C++では、同じ処理をさせるにもコードの書き方で吐き出されるマシン語コードに違いが出ます。 ここでは自分が有効かなと思っている最適化ネタを記載してます。 昨今のマシンスペックを持ってすれば、ちょこざいな小手先テクニックは不要と思っている方もいらっしゃると思いますし、確かに、わざわざ最適化する必要がない場合も多いと思います。 ですが、ソフトウェアという物は、要となる数箇所を最適化するだけで動作が快適になったり、逆に、なにも考慮されずに書いたコードが(塵も積もれば山となるで)ソフトウェア全体のパフォーマンスを悪化させる要因にもなりかねません 昨今のコンパイラの最適化処理はかなり優秀ですし、今後さらに優秀になっていくと思われます。しかし、その最適化処理を有効に機能させる為のコーディングテクニックが存在することも事実です。 最適化されたコードというのは、コードの見易さとトレードオフになるケースが多いですが、何も考慮せずに書くコードより、速度面やコストパフォーマンス、コードの読みやすさなど、全てを考慮しながらコーディング出来ることが、良いソフトウェアに繋がると考えておりますし理想だと思っています。 開発環境として、VisualStudio6 及び VisualStudio.NET2003 をターゲットにしており、WindowsAPIを使った例もありますが、基本的な考え方は多分どんな環境にも通じるであろうと思います。 もし掲載されている内容に間違いなどありましたら是非ご指摘ください。それ程自信がある訳ではないので、御意見、アドバイスなど頂けると大変嬉しいです。 written by takatsuka |
目次 |
・メンバ変数の参照は控えめにすべし |
・空関数の実体はヘッダに書くべし |
・"経過時間"の判断方法の穴に落ちるべからず |
・メンバ変数の並びを考慮すべし(2005/4/7補足追加) |
・コンパイラの最適化"エイリアスを使わないと仮定する"の意味を熟考すべし |
・try 〜 throw 〜 catch の乱用を避けるべし (2005/2/5追加) |
・ビットフィールドを活用すべし(メモリ節約編) (2005/11/6追加、2005/12/27少し追加) |
・シフト演算の乗除算に注意すべし(2006/1/5追加) |
・STL と MFC の map 速度比較(2007/1/28追加) |
・VisualStudio2005,2008,2010 のコンテナの速度比較(2010/8/14追加) |
コンテンツのトップ |
次のページ メンバ変数の参照は控えめにすべし |