有人知道对GC影响很小的快速CSV解析器吗?例如,SuperCsv创建了太多的对象(字符串),GC对此并不高兴......
感谢。
答案 0 :(得分:5)
我建议您使用固定长度的char []来读取文件中的内容,而不是创建字符串,一次说10K个字符。根据行中最可能的最大字符数来确定char []的大小。然后遍历char []并查找逗号。一旦找到逗号,请将位置保存在int []中。所以,int [0]表示第一个逗号位置,int [1]表示第二个逗号,依此类推。重用每一行的int []。
这样你就不会为每一行声明任何变量。因此没有GC开销。您需要做的就是使用存储在int []中的位置从大型char []读取每个字段的值,并从中理解。
答案 1 :(得分:1)
看看https://github.com/titorenko/quick-csv-streamer,它会产生最少量的垃圾。
免责声明:我是这个图书馆的作者。