[英]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.