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倍遅いです。