python、java、c、go执行速度对比

时间:2022-05-10

python版本

NUM 111181111 # 这是素数, 因此在循环结束前不会退出 is_primen
    i while i  n
         n  i return False i return True __name__ '__main__' is_primeNUM

测试的方式是使用linux的time命令,时间统一用total统计,比如统计go语言执行时间的命令如下:

➜  Desktop time speed
speed  01s user 02s system  cpu 1.048 total

统计java如下:

➜  src gitmaster ✗ time java egSpeed
java egSpeed  14s user 05s system  cpu 1.256 total

其他几个代码的版本如下:

java版本

package eg public class Speed static final long NUM 111181111L public boolean isPrimelong n long i  L while i  n 
             n  i return false i return true public static void mainString args 
        Speed s Speed sisPrimeNUM
is_primelong n long i while i  n 
         n  i return i return main const long NUM 111181111L is_primeNUM

go版本

package main func is_primen bool /* 声明局部变量 */ i  
 
     i  n 
         n  i return false i return true func main const NUM 111181111 is_primeNUM

最终结果统计如下:

执行时间(total)秒
python 2.7.13 11.256
python 3.7.0 11.462
java 1.8.0_121 HotSpot 1.256
c (Apple LLVM version 10.0.0) 1.069
go 1.8.1 1.048

go和c最快,java略慢,python2与python3速度差不多,但比前面三种语言慢10倍。原因我也查了一下,
简单来说是因为2点:
1.Python等动态类型语言,在执行每一个简单的操作时都需要大量的指令才能完成(包括做类型判断,不同类型找出各自的方法,执行不同的指令);
2. C语言和Python的数据结构和算法不同.

作者:ThomasYoungK 链接:https://www.jianshu.com/p/d60eff598aa0 来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

【推荐】 Linux Shell 基础 -- 总结几种括号、引号的用法
【推荐】 从JDK8飞升到JDK17,再到未来的JDK21
【推荐】 java算法 -余弦相似度计算字符串相似率
【推荐】 大数据开发专家(40K以上)必须掌握技能!