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

您所在的位置:网站首页 surfacego2和go3的速度对比 python、java、c、go执行速度对比

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

2023-05-06 00:56| 来源: 网络整理| 查看: 265

闲来无事,我对java、c、python、go的运算速度做了对比,执行的基准代码是:

python版本

NUM = 111181111 # 这是素数, 因此在循环结束前不会退出 def is_prime(n): i = 2 while i < n: if n % i == 0: return False i += 1 return True if __name__ == '__main__': is_prime(NUM)

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

➜ Desktop time ./speed ./speed 1.01s user 0.02s system 97% cpu 1.048 total

统计java如下:

➜ src git:(master) ✗ time java eg.Speed java eg.Speed 1.14s user 0.05s system 95% cpu 1.256 total

最终结果统计如下:

语言 执行时间(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): gcc prime.c后 1.069 c 优化编译: gcc -O3 prime.c后 0.005 go 1.8.1 1.048 结论

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

另:听青南安利说用rust可能更快,鉴于没写过rust,因此就不实验了。

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

java版本

package eg; public class Speed { static final long NUM = 111181111L; public boolean isPrime(long n) { long i = 2L; while (i < n) { if (n % i == 0) { return false; } i += 1; } return true; } public static void main(String[] args) { Speed s = new Speed(); s.isPrime(NUM); } }

c版本

int is_prime(long n) { long i = 2L; while (i < n) { if (n % i == 0) { return 0; } i += 1; } return 1; } int main() { const long NUM = 111181111L; is_prime(NUM); }

go版本

package main func is_prime(n int) bool { /* 声明局部变量 */ var i = 2 for i < n { if n % i == 0 { return false } i++ } return true } func main() { const NUM int = 111181111 is_prime(NUM) }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3