Go真的可以比Python快得多吗?

我认为我可能执行不正确,因为结果没有意义。我有一个Go程序,计数为1000000000:


package main


import (

    "fmt"

)


func main() {

    for i := 0; i < 1000000000; i++ {}

    fmt.Println("Done") 

}

它在不到一秒钟的时间内完成。另一方面,我有一个Python脚本:


x = 0

while x < 1000000000:

    x+=1

print 'Done'

几分钟即可完成。


为什么Go版本这么快?他们俩都算上了10亿吗?还是我错过了什么?


红颜莎娜
浏览 187回答 3
3回答

皈依舞

10亿不是一个很大的数字。如果能够使用本机类型进行工作,那么任何相当现代的机器最多都应该能够在几秒钟内完成此操作。我通过编写等效的C程序,读取程序集以确保它确实在进行加法并对其进行计时(在我的计算机上约1.8秒内完成)来验证这一点。但是,Python没有本机类型变量(或根本没有有意义的类型注释)的概念,因此在这种情况下,它必须完成数百倍的工作。简而言之,您对标题问题的回答是“是”。去真的可以比Python的更快了,甚至没有任何一种编译器弄虚作假像优化掉无副作用环。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go