調査は進展した - パフォーマンスチューニング
- profiler で動きが分かるように関数を分割した
- findFreeLocalRef と existsInCanFrees がやはり重い
- 線形探索の傾向を見る
- (/ 92472.0 131365.0) = 70% は見つからない検索
- 70% はリストの最後まで到達する
- 上記の 70% をふまえて見つからなかったものキャッシュを実装したが効果はなかった。
- 探索対象にあまり重複がないのだろう
微効果のあったもの
- EqHashTable で ObjectMap のサイズを 100 に。
- eqv を inline 化。
結論
2週間ほど寝かせる。(Googleカレンダーに放り込んだ)