繁体   English   中英

我可以加速 uniVocity CSV 解析器吗?

[英]Can I speed up uniVocity CSV Parser?

我正在开发一个项目,该项目使用 uniVocity CSV 解析器来读取包含 CSV 数据的InputStream 总体而言,CSV 解析器运行良好,但是有一行似乎很慢。

当我调用beginParsing()方法时,在我的单元测试中执行此方法似乎需要将近 4 秒。 有什么办法可以加快这个速度吗? 谢谢!

this.csvSettings = new CsvParserSettings();
csvSettings.setLineSeparatorDetectionEnabled(true);
RowListProcessor rowProcessor = new RowListProcessor();
csvSettings.setProcessor(rowProcessor);
csvSettings.setMaxCharsPerColumn(ValueVector.MAX_BUFFER_SIZE);
...
this.csvReader = new CsvParser(csvSettings);
logger.debug("Time to open CSV Parser: {} milliseconds", timer.elapsed().getNano() / 100000);

// This line is slow
csvReader.beginParsing(searchResults, "utf-8");
logger.debug("Time to open input stream: {} milliseconds", timer.elapsed().getNano() / 100000);

结果如下:

19:35:23.475 [2112b444-e4af-cf7b-5006-7a79bbdae8dc:frag:0:0] DEBUG - Time to open CSV Parser: 262 milliseconds
19:35:24.912 [2112b444-e4af-cf7b-5006-7a79bbdae8dc:frag:0:0] DEBUG - Time to open input stream: 4634 milliseconds
19:35:24.921 [2112b444-e4af-cf7b-5006-7a79bbdae8dc:frag:0:0] DEBUG - Time to build schmea: 4727 milliseconds

如果ValueVector.MAX_BUFFER_SIZE太大,则进程在分配所需的 memory 时遇到问题。 例如,如果它需要以 2GB 启动,并且 JVM 没有使用足够的 ram(即 Xms < 2G)进行初始化,它会变慢,因为启动时没有足够的 memory 可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM