scalac
を使ってHello World
を出力するコードをコンパイルし、時間を測ってみました。
コンパイルしたコードは下記の通り
scala
1object HelloWorld { 2 def main(args: Array[String]) { 3 println("Hello, world!") 4 } 5}
測定コマンドと結果はこちら
[ 10:08PM ] [ kompiro@kompiro-air-2013:/tmp ] $ time scala hello.scala Hello, world! scala hello.scala 0.73s user 0.19s system 20% cpu 4.489 total
Hello Worldを出力するだけで4.5秒か…、と思ってしまうんです。
コンパイル時間はこちら。
[ 10:16PM ] [ kompiro@kompiro-air-2013:/tmp ] $ time scalac hello.scala scalac hello.scala 5.47s user 0.27s system 251% cpu 2.281 total
コンパイルで2秒か…、と思ったんですが、もっと早くできませんか?
他のJVM系LLのコンパイルも試してみたよ
GroovyとJRubyのコンパイル速度も比較してみました。どちらともクラスがなくても処理が動くけど、それだと比較しにくいので、クラスも定義しました。
groovy
1 2 $ groovyc -v 3Groovy compiler version 2.4.3 4Copyright 2003-2013 The Codehaus. http://groovy.codehaus.org/ 5 6[ 10:58PM ] [ kompiro@kompiro-air-2013:/tmp ] 7 $ cat hello.groovy 8 9public class HelloWorld { 10 public static void main(String... args) { 11 print 'Hello World' 12 } 13} 14 15[ 10:58PM ] [ kompiro@kompiro-air-2013:/tmp ] 16 $ time groovyc hello.groovy 17groovyc hello.groovy 0.81s user 0.10s system 155% cpu 0.584 total
jruby
1 $ jruby -v 2jruby 9.0.0.0 (2.2.2) 2015-07-21 e10ec96 Java HotSpot(TM) 64-Bit Server VM 25.45-b02 on 1.8.0_45-b14 +jit [darwin-x86_64] 3 4[ 11:01PM ] [ kompiro@kompiro-air-2013:/tmp ] 5 $ cat hello.rb 6class Hello 7 def self.main 8 p 'Hello World' 9 end 10end 11 12Hello.main 13[ 11:01PM ] [ kompiro@kompiro-air-2013:/tmp ] 14 $ time jrubyc hello.rb 15jrubyc hello.rb 6.77s user 0.37s system 212% cpu 3.360 total
この中だとGroobyが早いっていうのが差なのかもしれない。
Javaだとどうなるか試してみた。
[ 11:52PM ] [ kompiro@kompiro-air-2013:/tmp ] $ cat HelloWorld.java public class HelloWorld { public static void main(String... args){ System.out.println("Hello World!"); } } [ 11:52PM ] [ kompiro@kompiro-air-2013:/tmp ] $ time javac HelloWorld.java javac HelloWorld.java 1.26s user 0.12s system 161% cpu 0.856 total
んー。やっぱりScalaは複雑なんですね。
回答2件
あなたの回答
tips
プレビュー