Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Scala中的打印速度如此之慢?_Java_Performance_Scala - Fatal编程技术网

Java 为什么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

刚开始学习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-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);