打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python竟然比go快这么多?

测了一下c、python、go的性能

目前发现 c第一,python第二,go第三

测试功能:求前100000中素数有哪些,个数多少

以下是测试的花费时间,go竟然最慢

c :1.25s

python: 1.36s

go: 3.6s

go咋会第三?有没有人帮我优化下。。。

python当然还有其他优化方案,这里用的numba,兼容性差,用的时候莫名其妙很多错误。可以用pypy,当然还可以用nuitka编译为二进制,不过bumba是最快的。

用cpython,要30多秒,python优化后:

用nuitka好像只要几秒大概8、9秒。

用pypy大概4.5秒左右。

用numba才1.36秒。

numba居然这么快,要是兼容性更高点就无敌了。

惊喜的是:main函数中的哪些代码,居然可以用github copilot 完成,只需要按tab,回车,就可以完成。。

想想也太可怕了

c代码如下:

#include <stdio.h>#include <stdint.h>#include <sys/time.h>int is_prime(long n) { long i = 2L; while (i < n) { if (n % i == 0) { return 0; } i += 1; } return 1;}uint64_t elapsed(struct timeval start, struct timeval end) { return (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec);}int main() { int prime_num = 0; struct timeval start, end; gettimeofday(&start, 0); for (long i = 0; i < 100000; i ++) { if (is_prime(i)) { prime_num += 1; } } gettimeofday(&end, 0); uint64_t elapsed_time = elapsed(start, end); printf('time cost:%fs, prime_num:%ld\n', elapsed_time/1000000.0, prime_num); return 0;}

python代码如下:

#-*-coding:utf-8-*-import timeimport numba@numba.jitdef is_prime(n):    i = 2    while i < n:        if n % i == 0:            return False        i += 1    return Truedef test():    prime_num = 0    t1 = time.clock()    for i in range(2, 100000):        if is_prime(i):            prime_num += 1    t2 = time.clock()    print ('time cost:{}s, prime_num:{}'.format(t2-t1, prime_num))if __name__ == '__main__':    test()

go代码如下:

package mainimport ('fmt''time')func is_prime(n int) bool {var i = 2for i < n {if n%i == 0 {return false}i++}return true}func main() {t1 := time.Now()prime_num := 0count := 100000fori := 0; i < count; i++ {if is_prime(i) {prime_num++}}t2 := time.Since(t1)fmt.Println('time cost:', t2, 'prime_num:', prime_num)}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
神奇的一行代码,让 Python 轻松跑赢 C
libevent在windows下使用步骤详解
Linux 中的计时方法
struct timeval结构体
Python有哪些好用的库?
用Python实现求最大公约数和判断是否是素数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服