bjam高速化 その1

Windows版もSolaris版の速度に近づいてきたので、今日はSolarisでのプロファイリング結果を参考にしながら高速化していました。

  • skip_parserをruleを使わない独自実装に置き換えた
  • expand_variable()で直積を作る必要がない場合に関数を中断するように変更
  • tree_matchのコンストラクタに属性値を渡すと「trees.reserve(10)」されるので、明らかに無駄そうな、属性型がcharの場合にreserve()を呼ばないように細工した


実行時間はこうなりました。

ver 時間
オリジナル 05.531秒
v1 87.500秒
v2 70.734秒
_SECURE_SCL=0 30.219秒
skip_parser 27.250秒
expand_variable 22.578秒
match for char 21.765秒

まだ、オリジナルの4倍遅いです。