我想我可能没有正确地实现这个,因为结果没有意义。我有一个计数到 1000000000 的 Go 程序:
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 版本的速度这么快?他们都数到 1000000000 还是我错过了什么?
最佳答案
十亿并不是一个很大的数字。任何相当现代的机器应该最多可以在几秒钟内完成此操作,如果它能够使用 native 类型完成工作。我通过编写一个等效的 C 程序来验证这一点,阅读程序集以确保它确实在进行加法,并对其进行计时(在我的机器上完成大约 1.8 秒)。
然而,Python 没有原生类型变量的概念(或根本没有有意义的类型注释),因此在这种情况下它必须做数百倍的工作。简而言之,您的标题问题的答案是"is"。 Go 真的可以比 Python 快得多,即使没有任何类型的编译器技巧,例如优化无副作用的循环。
关于python - Go 真的能比 Python 快那么多吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12574909/