bjam高速化 その7

TICKを仕込む範囲を狭めていって、コードを調べていたところ、変数の展開処理に明らかな無駄があったので修正しました。
差分


jam言語の変数展開では修飾子によって変数の値を加工できるため、変数展開の度に文字列リストを生成していたのですが、

X = $(HOGE) ;

のように無加工で扱うことが圧倒的に多いので、この場合は単純にコピーしたほうが速いです。(hamigaki::bjam2::string_listはCOW方式なのでコピーのコストは低い)
で、そういう小細工を仕込んでみました。


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

ver 時間
オリジナル 5.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秒
expand_variable2 17.422秒

久々に縮みました。
なんか、この手のヘマがまだありそうです。