注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

程序员小站

J2EE丨Spring | JVM | Scala

 
 
 

日志

 
 

Python、Java、Scala性能对比  

2014-11-29 22:57:58|  分类: JVM |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本文通过运行同样的逻辑,计算斐波那契数,统计运行时间,比较Python、PyPy、Java、Scala的性能。

Python:
#!/usr/bin/env python
# encoding=utf8
__author__ = 'sofn'

def fib(n):
if n < 2:
return n
else:
return fib(n - 1) + fib(n - 2)

print(fib(36))
Java:  flib.java
public class flib {
public static int flib(int n) {
if (n < 2)
return n;
else
return flib(n - 1) + flib(n - 2);
}

public static void main(String[] args) {
System.out.println(flib(36));
}
}
Scala:  flib2.scala
object flib2 extends App {

@scala.annotation.tailrec
def flib(n: Int, preResult: Int, result: Int): Int = {
if (n <= 1) result
else flib(n - 1, result, preResult + result)
}

println(flib(36, 0, 1))
}
Scala2:  flib3.scala
object flib3 extends App {
def flib3(n: Int): Int = {
if (n <= 2) 1
else flib3(n - 1) + flib3(n - 2)
}
println(flib3(36))
}

测试机CPU: Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
测试结果如下:
time python flib.py :    5.324s
time pypy flib.py :       1.071s
time java flib :    0.146s
time java flib2 :           0.298s
time java flib3 :           0.369s

将Java、Scala中的计算值设为45:
time java flib :    5.662s
time java flib2 :           0.302s
time java flib3 :           4.721s

结论:
1、对于Python的性能真心跪了;
2、不改源代码,Python执行改为PyPy执行,性能提升近5倍;
3、普通的逻辑Scala和Java性能相差不多;
4、大量的计算Scala的尾递归性能提升明显。
  评论这张
 
阅读(2321)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017