程序性能和效率:多个打印语句与" \ n"

时间:2015-03-13 17:54:16

标签: java performance

大家只是从我观察的一个观察中查询它可能是微不足道的但是我想知道在使用多个System.out.println()语句而不是使用一个语句和使用<时,在性能或效率方面存在很大的折衷strong>“\ n”在该声明中创建新行?对于像打印这样的东西特别适用于小型程序而言,这可能不是问题,但只是好奇。

2 个答案:

答案 0 :(得分:2)

println(稍微)会慢一些,因为每个换行符会写入标准输出一次。另一方面,当您编写类似"\n" + variable + "etc"的内容时,实际上编译为使用StringBuilder,这相当快 - 无论如何,比写入标准输出更快。

当然,除非您已经衡量了某种性能问题,否则不应仅仅为了性能而使用+"\n"代替println。但在这种情况下,您可能希望将System.out包装在缓冲区中。

答案 1 :(得分:2)

如果您的进程输出已被重定向,则输出的昂贵部分将执行实际输出,无论是控制台还是文件。与实际输出相比,写入缓冲区是一种廉价的操作。

即使输出是缓冲的,每次调用println都会执行输出,因为System.out是在autoflush模式下创建的。这意味着多次调用println将执行多次刷新,而具有多个嵌入式'\n'符号的单个调用将仅刷新一次。这可以为您带来轻微的性能优势。

然而,几乎可以肯定是微观优化;确定的唯一方法是描述您的具体实施。代码的可读性更为重要,因此如果将'\n'嵌入到字符串中会使代码更具可读性,那么无论它可能具有哪些微小的性能影响,它都是一件好事。