比较下GO、python、delphi、C#、java等执行速度。

大洋的顶端 发布于 2017/01/16 12:15
阅读 7K+
收藏 3

电脑 WIN64位,比较方式,用标准库 来做整数型的运算。

计算40000*40000的遍历


1:c#,速度还行,4.3秒,这是NET2.0下编译的,不清楚在3.5、4.0、5.0下编译的的执行速度怎么样?






2:python,什么啊,需要238秒,知道python的速度慢,但是这个太慢了点,还是用第三方库文件来计算吧。






3:我们中国的中文编程语言 ,易语言,20秒的样子,不上不下。





4:delphi 这是一门强大的语言,只不过用D7来编译,好像3.53秒的样子。D7本是WIN32位下面的产物,现在速度慢了点也无关紧要。






5:JAVA,2.63秒的速度,好像并不慢嘛,应该是JAVA根据平台优化的结果。





6:GO语言,速度这么快???GO1.74编译的结果。

加载中
3
演员超
演员超
宏哥跟那个ee的小弟还不出来?
skhuhu
skhuhu
哈哈 就服你
2
大洋的顶端
大洋的顶端

7:PHP,根据下面的yak修改,需要66秒。排名比python强,在PHP5.4下测试。

eechen
eechen
回复 @梁上有木 : php-src/Zend/bench.php测试中,PHP JIT速度是PHP 5.4的10倍.
eechen
eechen
回复 @梁上有木 : 有更专业的PHP测试脚本https://www.phpclasses.org/blog/post/493-php-performance-evolution.html 截图 https://static.oschina.net/uploads/space/2016/1215/213629_gJ1R_561214.png
工兵铲
工兵铲
用7.1 试试
2
魔力猫
魔力猫
比较没什么意义,而且python干嘛用这种慢悠悠的方式,range(40001)初始化消耗多大呀。为什么人家只需要计数你就非给一个大对象呢。
1
雨翔河
雨翔河

楼主是来逗我的吗,这太扯了吧

1
jiuker
jiuker
go可以直接用Sub来计算时间
1
大賢者
大賢者
比较 无意义。选择语言多种因素,运算速度,开发效率,代码难易度,跨平台 等
1
回去干活
回去干活

复杂的业务情况下,JIT不一定比aot慢的.

随着JIT的成熟,以后将超越AOT.

不过这种纯语言上的运算并不会影响什么,实际主要是IO这块要处理好,减少等待时间,估计也只有erlang,golang才有这样的天生的优势.

1
M
MikeDrew
楼主试试 julia
1
NickWilde
NickWilde

这个c大概1秒吧,没有精确取时间,用gcc -O2进行优化

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <time.h>

int
main(int argc, char *argv[])
{
    time_t t1 = time(NULL);
    uint64_t sum = 0, i, j;
    for(i = 0; i <= 40000; ++i) {
        for(j = 0; j <= 40000; ++j) {
            sum += i * j;
        }
    }
    time_t t2 = time(NULL);
    printf("result : %lu", sum);
    printf("spend time : %u", (uint32_t)(t2 - t1));
    return 0;
}



NickWilde
NickWilde
回复 @乌龟壳 : 原来如此,居然有这事
乌龟壳
乌龟壳
回复 @linux工人 : 把i和j换成int,就能0.7秒出来了,和1.8版的java是一致的。
NickWilde
NickWilde
result : 640032000400000000 spend time : 1 real 0m1.246s user 0m1.238s sys 0m0.000s
1
NickWilde
NickWilde

用pypy3.3性能会好很多很多

import time
from functools import reduce

t = time.time()
sum = 0
def loop_i_j():
    for i in range(40001):
        for j in range(40001):
            yield i * j
sum = reduce(lambda a, b : a + b, loop_i_j())
print(sum)
print(time.time() - t)



root @host :~/pypy3-v5.5.0-linux64/bin# ./pypy3 /root/t_spd.py
640032000400000000
11.952942371368408

魔力猫
魔力猫
回复 @eechen : 我的意思是无论哪个实现跑,Python这里都用了最不好的算法。没性能问题也能拖出性能问题来,对Python不公平。
eechen
eechen
回复 @魔力猫 : PyPy不是Python官方实现,就像HHVM不是PHP官方实现.说实话,PHP5都比Python官方的CPython快,可见CPython真心谈不计算性能好.累加求和:0+1+2+3+...+99999999,我电脑Ubuntu(i5-3230M)上测试,Python耗时16.9秒,PHP5耗时14.7秒,PHP7耗时5.8秒.
魔力猫
魔力猫
无论如何,冉家循环是整数累加计数,Python则造4W多个对象,对比太不合适了。
返回顶部
顶部