4

我有超过 20 个 5000x30 双数组,每个数组都将使用以下命令写入文本文件:

PrintWriter test = new PrintWriter(new BufferedWriter(new FileWriter("test.txt")));

处理过程花了我 10 多分钟,我想看看是否有其他方法可以加快处理速度。

4

3 回答 3

3

不要在大量缓冲区上处理所有内容,而是在绝对必要之前避免刷新缓冲区。

实际上,这意味着不要使用println printf flush format或任何其他会刷新缓冲区的方法。通过避免这种情况,您可以延迟并结合消耗运行时间的昂贵系统调用。

或者,在 PrintWriter 的构造函数中将 autoFlush 设置为 false。查看问题以获取更多信息

于 2012-09-25T05:17:31.157 回答
0

我建议为此使用java nio。它们本质上比传统的 java io 更快。请参考这些(1、2 示例开始。

于 2012-09-25T08:08:26.960 回答
0

将 PrintWriter 的 autoFlush 变量设置为 false。

PrintWriter test = new PrintWriter(new BufferedWriter(
                                   new FileWriter("test.txt")), **false**);

完成整个写入( println )后,调用 test.flush()

这样可以避免中间冲洗时间。

于 2012-09-25T07:35:06.733 回答