use*_*913 1 fileoutputstream bufferedwriter opencsv
我们正在使用 OpenCSV
(http://opencsv.sourceforge.net/apidocs/au/com/bytecode/opencsv/CSVWriter.html)
从包含 xml 内容的文件编写报告。
有两种方法可以解决这个问题 ->
i) 使用 FileOutputStream 写入
FileOutputStream fos = new FileOutputStream(file);
OutputStreamWriter osr= new OutputStreamWriter(fos);
writer = new CSVWriter(osr);
Run Code Online (Sandbox Code Playgroud)
ii) 使用 BufferedWriter 写入
BufferedWriter out = new BufferedWriter(new FileWriter(file));
writer = new CSVWriter(out);
Run Code Online (Sandbox Code Playgroud)
有谁知道选择一个选项而不是另一个选项会如何影响本报告的撰写绩效?
据我了解,OpenCSV 并不关心只要它获得可以使用的流即可。
性能的增量(差异)将是其之前的步骤,其中从文件创建输出流。
使用OutputStreamWriter与BufferedWriter对性能有何影响?
使用 Google Caliper运行一些基准测试后,看来 BufferedWriter 选项是最快的(但实际上没有太大区别,所以我只使用您觉得舒服的选项)。
如何解释结果:
该FileOutputStreamWriter场景对应选项 i
该BufferedWriter场景对应选项ii
该FileWriter场景是我添加的,仅使用普通的旧 FileWriter。
每个基准测试运行 3 次:写入 1000、10,000 和 100,000 行。
测试在 Linux Mint、i5-2500k (1.6GHz) CPU、8GB RAM 和 Oracle JDK7(写入 SATA 绿色硬盘)上运行。结果会因不同的设置而异,但这应该有助于比较。
rows benchmark ms linear runtime
1000 FileOutputStreamWriter 6.10 =
1000 BufferedWriter 5.89 =
1000 FileWriter 5.96 =
10000 FileOutputStreamWriter 50.55 ==
10000 BufferedWriter 50.71 ==
10000 FileWriter 51.64 ==
100000 FileOutputStreamWriter 525.13 =============================
100000 BufferedWriter 505.05 ============================
100000 FileWriter 535.20 ==============================
Run Code Online (Sandbox Code Playgroud)
仅供参考 opencsv 将Writer您提供的内容包装在PrintWriter.
| 归档时间: |
|
| 查看次数: |
5611 次 |
| 最近记录: |