測了一下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
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 = 2 for i < n { if n%i == 0 { return false } i++ } return true}func main() { t1 := time。Now() prime_num := 0 count := 100000 fori := 0; i < count; i++ { if is_prime(i) { prime_num++ } } t2 := time。Since(t1) fmt。Println(“time cost:”, t2, “prime_num:”, prime_num)}