scala和java哪个运行速度快

在spark时代,scala流行起来,有人认为scala比java好用,scala简单,简洁。觉得java比较繁琐,确实,在代码量上来说,确实如此,今天看了一些文档,发现其中的奥秘。

  1. 从代码量上来说
    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编译成字节码的质量了。
两者的比较大家也可以测试一下。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值