bjam高速化 その5
今日は単純なループの手抜きを直しました。
差分
for (std::size_t i = 0; i < vec.size(); ++i) ...
を
for (std::size_t i = 0, size = vec.size(); i < size; ++i) ...
に変えただけです。
「STLアルゴリズムを使え!」という感じですが、途中で抜ける条件が多かったりしてこうなってます。
このあとMinGWならgprofが使えるなぁと思って試してみたんですが、ロケール関連の初期化が実行時間のほとんどを占めるという妙な結果になりました。
もちろんそんなわけはなく、実際に測ってみてもほとんど時間はかかってません。
MinGWのgprofも今回は参考にならなさそうです。
で、「ロケールがマズいんだ!」と勘違いしてコードを手直ししている間に、include文の箇所でタイムスタンプを出力しておくと、ファイル辺りの処理時間がおおよそ把握できることに気が付きました。
調べてみると、いくつかのファイルで極端に時間がかかっていたので、ここからボトルネックを特定できるかもしれません。
ようやく、光明が見えてきたかなぁ。