在spark时代,scala流行起来,有人认为scala比java好用,scala简单,简洁。觉得java比较繁琐,确实,在代码量上来说,确实如此,今天看了一些文档,发现其中的奥秘。
- 从代码量上来说
scala比java简洁
开发效率高于java,这是无可置疑的。
比如:
java的输出:System.out.println(“hello world”);
scala的输出: println(“hello world”)
2.两者都依赖jvm虚拟机
Scala程序必须要基于jvm,Scala是在Java的基础上开发实现的。所以要 将scala进行编译,然后交给jvm进行执行。
而java也是基于jvm,通过字节码编译,执行。
3.那么两者的执行快慢如何得出:
scala的底层是java,按说是java运行的快。
java代码 for
public class Demo1 {
public static void main(String[]args){
long start = System.currentTimeMillis();
int t = 0;
for (int i= 0; i<= 100000;i++) {
t += i;
}
long end = System.currentTimeMillis();
System.out.println(end-start);
System.out.println(t);
}
}
结果为:
3
705082704
Process finished with exit code 0
可以看到java的运行确实很快。
再来看一下scala的两种方式:
一种是while 一种是for
首先看一下for循环
object Demo2 {
def main(args: Array[String]): Unit = {
var start = System.currentTimeMillis
var t = 0
for (i <- 0 to 100000) {
t += i
}
val end = System.currentTimeMillis
println(end-start)
println(t)
}
结果为:
422
705082704
Process finished with exit code 0
再来看一下while循环
object Demo3 {
def main(args: Array[String]): Unit = {
val start = System.currentTimeMillis
var total = 0
var i = 0
while ( {
i < 100000
}) {
i = i + 1
total += i
}
val end = System.currentTimeMillis
println(end - start)
println(total)
}
}
2
705082704
Process finished with exit code 0
发现scala的for循环居然比while循环慢了这么多。本人测试多次,公平测试。
从上面来看 scala中的for比while循环慢很多。在代码优化中可以想到在此优化。
还有其他的测试总结: 用java代码和scala代码,对比同一个算法,发现java比scala快很多。执行的快慢应该主要看scala编译成字节码的质量了。
两者的比较大家也可以测试一下。