Efficient C++ 12~16章 まとめ

Efficient C++ 12章から16章の簡単なまとめです。


12章 参照回数計測

次のいずれかに当てはまる場合、参照回数計測が有利となる。
・対象オブジェクトが大量にリソースを消費する。
・問題となるリソースの確保や解放による負荷が大きい
・共有度が高い。
・参照の生成あるいは削除の負荷が比較的小さい


13章 コーディングの最適化

同じ計算は何度も行わず、キャッシングする。
不必要となるかもしれない計算は後回しにする。(遅延評価)
柔軟性を優先しすぎないようにする。
メモリ管理に関する呼び出しは最小限にする。
キャッシュを有効活用するため、処理が連続するデータを近づける。
全体の20%の程度の、オーバヘッドとなる部分を優先的に高速化する。(80-20の法則)


14章 設計の最適化

設計単位でも、データのキャッシングや遅延評価を行う。
効率のよいデータ構造を採用する。


15章 スケーラビリティ(拡張性)

直列化コードを減らし、複数のスレッドで並列処理できるようにする。
共有を減らすよう心がける。必要のないロックを避ける。


16章 システムアーキテクチャの依存性

プロセッサがキャッシュを有効活用できるようにする。
分岐はできるだけ避ける。
コンテキストスイッチ(プロセスの切り替え)を避ける。