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 来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。