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秒 |
久々に縮みました。
なんか、この手のヘマがまだありそうです。