【发布时间】:2014-09-26 05:55:14
【问题描述】:
我已经分析了我的应用程序,目前我最大的瓶颈之一似乎是String.split 方法。它占用了我 21% 的运行时间,而其他主要贡献者不再是我可以简化的部分。似乎所有新创建的 String 对象都导致垃圾收集器出现问题,尽管我不太清楚是否是这种情况。
我正在读取包含财务数据的 gzip 压缩文件中的逗号分隔值。每行中的字段数取决于它是什么类型的记录,每个字段的大小也不同。什么是读取数据的最快方法,创建最少的中间对象?
我看到了this thread,但没有任何答案表明 OpenCSV 比 String.split 快,而且他们似乎都专注于使用外部库而不是编写新代码。我也非常担心内存开销,因为我将总运行时的另外 20% 左右用于垃圾收集。我只想返回有问题的字符串的视图,但它是looks like that's not possible anymore。
【问题讨论】:
-
您的数据总是整数?如果您的数据包含字符串,如果它包含诸如“Hello, world!”之类的字符串,您的代码将失败
-
@MarcoAcierno 不,它们大多不是整数。一些字符串,一些浮点数,一些整数。
-
问题是使用Split 你也会拆分字符串。 (你应该确保字符串不会有 , 里面)
-
是的,我确定。字符串类似于股票行情。