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

标签 java performance parsing csv garbage-collection

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

谢谢。

最佳答案

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

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

关于java - 具有低 GC 负载的快速 CSV 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155308/

相关文章:

Mysql 性能 : IP direct as BINARY or via reference

java - 如何提取分支决策的 boolean 值?

java - 无法使用 AEM 中的任何系统用户为捆绑派生用户名

java形状在控制台上向下移动如何执行?

java - GSON 反序列化 : nested JSon file error

sql - 为什么更改我的表模式会减慢我的查询速度?

java - 有没有更好的方法来处理深度嵌套数据的空异常?

c# - 维护多个设置文件

php - 解码 json 响应并使用 for each 插入

java - 如何打包和运行 twill 示例应用程序