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