具有低GC负载的快速CSV解析器

时间:2011-05-27 16:44:09

标签: java performance parsing csv garbage-collection

有人知道对GC影响很小的快速CSV解析器吗?例如,SuperCsv创建了太多的对象(字符串),GC对此并不高兴......

感谢。

2 个答案:

答案 0 :(得分:5)

我建议您使用固定长度的char []来读取文件中的内容,而不是创建字符串,一次说10K个字符。根据行中最可能的最大字符数来确定char []的大小。然后遍历char []并查找逗号。一旦找到逗号,请将位置保存在int []中。所以,int [0]表示第一个逗号位置,int [1]表示第二个逗号,依此类推。重用每一行的int []。

这样你就不会为每一行声明任何变量。因此没有GC开销。您需要做的就是使用存储在int []中的位置从大型char []读取每个字段的值,并从中理解。

答案 1 :(得分:1)

看看https://github.com/titorenko/quick-csv-streamer,它会产生最少量的垃圾。

免责声明:我是这个图书馆的作者。