锁定老帖子 主题:c/java/python性能比较
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-06-25
最后修改:2010-06-29
测试环境: 8核8g内存
1. 文件读写测试:图中横坐标: 2表示2^2M = 4M 13表示2^13M = 8G
从上图 可以看出: c/java/python在文件读写方面性能差别不是很大,
2. 循环测试:做1073741824 个循环(1G),测试需要的时间,从而计算每种语言每秒运行的循环数:
java: 643730110 c: 293693059 python: 4683359
可以看出,python的循环性能最差. 但是比较奇怪的是java比c好。。。
所有代码见附件 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-06-25
IO基本上都是用同一套底层的api,差别很有限....
|
|
返回顶楼 | |
发表时间:2010-06-28
看到你的循环测试结果,就猜想你用了空循环,打开一看,果然如此。
不妨在循环体内增加一个语句,例如while(--i){if(i%2==0)j+=i;},或用一些实际有循环的代码来测试,看看结果如何。 有些编译器可能为了应付一些标准测试而做了特别优化,这些优化可能在实际当中根本毫无用处,以至于测试结果显示性能第一,实际应用人们却感觉慢,往往还以为自己的感觉出了问题。 |
|
返回顶楼 | |
发表时间:2010-06-29
docpart 写道 看到你的循环测试结果,就猜想你用了空循环,打开一看,果然如此。 不妨在循环体内增加一个语句,例如while(--i){if(i%2==0)j+=i;},或用一些实际有循环的代码来测试,看看结果如何。 有些编译器可能为了应付一些标准测试而做了特别优化,这些优化可能在实际当中根本毫无用处,以至于测试结果显示性能第一,实际应用人们却感觉慢,往往还以为自己的感觉出了问题。 我修改了测试代码: while (loop_cnt-- > 0) { sum += loop_cnt; } c和java的差别更大: c: 287,096,744 java: 1,234,186,004 (每秒1G个循环) model name : Intel(R) Xeon(R) CPU E5420 @ 2.50GHz stepping : 6 cpu MHz : 2493.795 |
|
返回顶楼 | |
发表时间:2010-06-29
关于优化:
给gcc添加了-O2选项, 这时候c语言loop需要的时间变为0. 于是,将main返回值改为 sum: 原来: return 0; 现在: return sum; 这样,c语言和java的1G个循环需要的时间差不多: 引用 cc -O2 -o loop loop.c ./loop 1073741824 0.736 javac Loop.java java Loop 1073741824 0.869 |
|
返回顶楼 | |
发表时间:2010-06-29
又是性能比较……
|
|
返回顶楼 | |
发表时间:2010-06-29
应该再比较一下消耗的内存大小,Java消耗内存是很大的
|
|
返回顶楼 | |
发表时间:2010-06-29
同意楼上, 内存也是需要比较的一个方面。
|
|
返回顶楼 | |
发表时间:2010-06-29
没有什么意义.
|
|
返回顶楼 | |
发表时间:2010-06-29
每次都想看JAVA 性能是不是最差的。
每次都可能看到JAVA性能在测试中不错。 每次都要看到有人骂JAVA性能差。 |
|
返回顶楼 | |