我認(rèn)為我可能執(zhí)行不正確,因為結(jié)果沒有意義。我有一個Go程序,計數(shù)為1000000000:package mainimport ( "fmt")func main() { for i := 0; i < 1000000000; i++ {} fmt.Println("Done") }它在不到一秒鐘的時間內(nèi)完成。另一方面,我有一個Python腳本:x = 0while x < 1000000000: x+=1print 'Done'幾分鐘即可完成。為什么Go版本這么快?他們倆都算上了10億嗎?還是我錯過了什么?
3 回答

皈依舞
TA貢獻1851條經(jīng)驗 獲得超3個贊
10億不是一個很大的數(shù)字。如果能夠使用本機類型進行工作,那么任何相當(dāng)現(xiàn)代的機器最多都應(yīng)該能夠在幾秒鐘內(nèi)完成此操作。我通過編寫等效的C程序,讀取程序集以確保它確實在進行加法并對其進行計時(在我的計算機上約1.8秒內(nèi)完成)來驗證這一點。
但是,Python沒有本機類型變量(或根本沒有有意義的類型注釋)的概念,因此在這種情況下,它必須完成數(shù)百倍的工作。簡而言之,您對標(biāo)題問題的回答是“是”。去真的可以比Python的更快了,甚至沒有任何一種編譯器弄虛作假像優(yōu)化掉無副作用環(huán)。
- 3 回答
- 0 關(guān)注
- 210 瀏覽
添加回答
舉報
0/150
提交
取消