Java和PyPy运行同一段代码,对比结果.

Java代码:

package javatest;

import java.text.DecimalFormat;
import java.util.Date; public class speedTest
{
public static void main(String[] args)
{
int i = 0;
int max = 2000000;
Date start = new Date();
while (i++ < max)
{
transform();
}
Date end = new Date();
long diff = end.getTime() - start.getTime(); StringBuffer maxToshow=new StringBuffer();
maxToshow.append(max);
int count=0;
for(int a=1;a<String.valueOf(max).length();a++)
{
if(a%3==0)
{
count++;
maxToshow.insert(String.valueOf(max).length()-count*3, ",");
}
}
//String s = String.format("it takes %f seconds to run %s loops",
// diff / 1000.00, new DecimalFormat(",###").format(max));
String s = String.format("it takes %f seconds to run %s loops",
diff / 1000.00, maxToshow.toString());
System.out.println(s);
} public static void transform()
{
String str = "Pcybgle rfgq rsrmpgyj fyq npmzyzjw pcgldmpacb wmsp glrcpcqr gl sqgle Nwrfml - wms qfmsjb zc cyecp rm ynnjw Nwrfml rm qmjtgle wmsp pcyj-umpjb npmzjckq. Ufcpc qfmsjb wms em rm jcypl kmpc?";
for (int i = 0; i < str.length(); i++)
{
char c = str.charAt(i);
if (c >= 'a' && c <= 'z')
{
c += 2;
if (c > 'z')
{
c -= 26;
}
// System.out.print(c);
} else if (c >= 'A' && c <= 'Z')
{
c += 2;
if (c > 'Z')
{
c -= 26;
}
// System.out.print(c);
}
else
;// System.out.print(c);
}
}
}

Python代码:

import sys,datetime
import numFormatter def transform():
str='''Pcybgle rfgq rsrmpgyj fyq npmzyzjw pcgldmpacb wmsp glrcpcqr gl sqgle Nwrfml - wms qfmsjb zc cyecp rm ynnjw Nwrfml rm qmjtgle wmsp pcyj-umpjb npmzjckq. Ufcpc qfmsjb wms em rm jcypl kmpc?'''
for s in str:
if ord(s)>=ord('a') and ord(s)<=ord('z'):
new=ord(s)+2
if new>ord('z'):
new-=26
#sys.stdout.write(chr(new))
elif ord(s)>=ord('A') and ord(s)<=ord('Z'):
new=ord(s)+2
if new>ord('Z'):
new-=26
#sys.stdout.write(chr(new))
else:
1==1#sys.stdout.write(s) def formatNumber(number):
numStr='%d'%number
formatStr=''
numStr=numStr[::-1]
i=0
while i<len(numStr):
formatStr+=numStr[i]
i+=1
if i%3==0:
formatStr+=','
formatStr=formatStr.strip(',')
formatStr=formatStr[::-1]
print formatStr starttime = datetime.datetime.now()
loops=200000;
for i in range(loops):
transform()
#sys.stdout.write('\n')
endtime = datetime.datetime.now() print 'it takes %s seconds to run %s loops'%((endtime - starttime).seconds,formatNumber(loops))

Java分别运行两百万次、两千万次、两亿次耗时结果:

PyPy运行上述代码,两百万次、两千万次、两亿次的耗时结果:

PyPy和Python解释器运行结果对比:

依据结果粗略估计,Java效率是PyPy的2.3倍,PyPy是Python的88.5倍

最新文章

  1. 【转载】动态新增svg节点
  2. BZOJ 2342 回文串-Manacher
  3. db2实例、数据库、表空间
  4. AngularJS的一点学习笔记
  5. [转]WCDMA系统结构及关键技术
  6. 3.Knockout.Js(属性绑定)
  7. linux语言环境设置
  8. angularJS中如何写控制器
  9. 在MVC中添加拦截器实现登录后的权限验证
  10. 201521123040《Java程序设计》第8周学习总结
  11. SSM-SpringMVC-10:SpringMVC中PropertiesMethodNameResolver属性方法名称解析器
  12. spring 排除指定的类或者包扫描
  13. 记录一次惊心动魄的sql去重
  14. sysfs文件系统的建立【转】
  15. python操作rabbitMQ小结
  16. JavaScript 基础数组循环和迭代的几种方法
  17. slf4j 和 log4j合用的(Maven)配置
  18. 1个比较简单的使用java反射机制获取前台数据进行数据封装的例子
  19. apm的学习资料
  20. 0基础小白怎么学好Java?

热门文章

  1. JSP页面的中文乱码
  2. NIO提升系统性能
  3. JMeter工具的使用-ForEach
  4. baidu时光轴_使用window.scroll实现的
  5. Java设计模式-策略模式(strategy)
  6. 11.Android之常用对话框AlertDialog学习
  7. system.badimageformatexception 未能加载文件或程序集问题解决
  8. loadrunner获取Http信息头中指定值作为参数
  9. 彻底理解position与anchorPoint
  10. Java Web 设置默认首页