パフォーマンスチューニング紆余曲折
この数ヶ月の動き。
- 多くの C++ 関数を計測せずに Inline 化。
- 速度に効果がないばかりか build dependency が増加しビルド時間に致命的なダメージ。開発効率が下がる。
- build dependency を改善するため、むやみな Inline 化を解消し、本当に必要なところだけ Inline 化。
- 計測とグラフを心がける。設計をこわすむやみな最適化は悪だと気付く。
- Scheme 側のアルゴリズムや、命令の粒度を変更、速度が上がる。
- Scheme 側のプロファイラを駆使して遅いところを特定。改善。
- 特定コードをGauche などと命令列レベルで比較。なぜ遅いかを分析する領域に突入。
- ほとんどの場合特定 C++ 関数が Inline 化されているか?に起因している。
- 再び Inline 化ブーム。←いまここ