Java 为什么Scala中的打印速度如此之慢?
刚开始学习Scala:)问题是:为什么打印到标准输出这么慢Java 为什么Scala中的打印速度如此之慢?,java,performance,scala,Java,Performance,Scala,刚开始学习Scala:)问题是:为什么打印到标准输出这么慢 $ time scala -e 'val s = "foobarjoe!"; for (i <- 1 to 10000000) println(s)' > /dev/null real 0m22.522s user 0m14.252s sys 0m8.508s $ scala -version Scala code runner version 2.11.4 -- Copyright 2002-201
$ time scala -e 'val s = "foobarjoe!"; for (i <- 1 to 10000000) println(s)' > /dev/null
real 0m22.522s
user 0m14.252s
sys 0m8.508s
$ scala -version
Scala code runner version 2.11.4 -- Copyright 2002-2013, LAMP/EPFL
此链接回答了以下问题: 如果您的程序使用System.out.println()在控制台上进行大量打印,则可以使用其他方法进行控制台输出,从而提高性能 默认情况下,System.out.print()只进行行缓冲,并执行大量与Unicode处理相关的工作。由于缓冲区较小,System.out.println()不适合在批处理模式下处理许多重复输出。每条管线都立即冲洗。如果您的输出主要基于ASCII,那么通过删除与Unicode相关的活动,总体执行时间会更好 现在仍然需要将解决方案从Java转换为Scala:)
可能是因为它必须编译、多次初始化JVM,等等——非常确定Java本身的结果是一样的,所以Scala不是问题(即使Scala与Java相比编译速度非常慢)2jco:不到一秒钟:$time Scala-e'println(“Hi,there”)'Hi,有一个真正的0m0.765s用户0m0.537s sys 0m0.089sas,我说过这是一个Java问题(与Scala无关),例如,请参见
$ time perl -le '$s = "foobarjoe!"; for (1..10000000) { print($s) }' > /dev/null
real 0m1.276s
user 0m1.266s
sys 0m0.010s
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new
FileOutputStream(java.io.FileDescriptor.out), "ASCII"), 512);