Closed orangesignal closed 10 years ago
cacheLine バッファの初期容量についてはopencsv なども同じ課題があったはずなので見てみるべし http://sourceforge.net/p/opencsv/code/HEAD/tree/trunk/src/au/com/bytecode/opencsv/CSVParser.java
INITIAL_READ_SIZE = 128
としているようだ
Super CSV の場合は、
で新しいインスタンスを生成しないようにすることで GC 抑制しているようだ
memo
GC 回数が Super CSV よりやや多いのは "a","""b""b""\r\nb","c" pattern に対応するためにもう1つ行キャッシュを使用しているせい。これを最適化できれば(可能性低い?)、Super CSV よりは GC 回数を低下させられるはず。
読込み速度の問題はまた別のところ。全般的に if の多さだろうと推測
GC.calls 大幅低下。とりあえず Super CSV 以下の GC.calls となった
ken_all.csv read x 15 (JunitBenchmarks)
opencsv 並みに GC.calls を低下。読込み速度も若干の向上。機能過多であることや csv paradox 対応をはずせないのでこれ以上の速度向上はなかなか厳しい
今回は GC 回数低減を中心としたチューニングとして一旦終わりとします
まだ GC 抑制の余地あり
など OrangeSignal CSVの場合、論理行単位に内部で行キャッシュしているので、cacheLine での更なる GC 抑制は効果が期待できる