Re: bjam高速化 その5
string_listの要素アクセスで、
const std::string& string_list::operator[](size_type n) const { if (n < size()) return (*pimpl_)[n]; else return dummy; }
みたいなことをしていると勘違いして、ループ内部でアクセスする場合にサイズチェックが無駄になるなぁと思って反復子を使うように書き直したんですが、逆に遅くなったので確認したところ、実際のコードは
const std::string& string_list::operator[](size_type n) const { return (*pimpl_)[n]; }
となっていて、サイズチェックはしてませんでした。
全部書き直してから気が付いたので、今日の作業は無駄になりました。
ちなみに反復子の方が遅いのは、多分vectorの反復子にラッパーをかぶせて使っているためです。