我认为我可能执行不正确,因为结果没有意义。我有一个Go程序,计数为1000000000:package mainimport ( "fmt")func main() { for i := 0; i < 1000000000; i++ {} fmt.Println("Done") }它在不到一秒钟的时间内完成。另一方面,我有一个Python脚本:x = 0while x < 1000000000: x+=1print 'Done'几分钟即可完成。为什么Go版本这么快?他们俩都算上了10亿吗?还是我错过了什么?
3 回答
皈依舞
TA贡献1851条经验 获得超3个赞
10亿不是一个很大的数字。如果能够使用本机类型进行工作,那么任何相当现代的机器最多都应该能够在几秒钟内完成此操作。我通过编写等效的C程序,读取程序集以确保它确实在进行加法并对其进行计时(在我的计算机上约1.8秒内完成)来验证这一点。
但是,Python没有本机类型变量(或根本没有有意义的类型注释)的概念,因此在这种情况下,它必须完成数百倍的工作。简而言之,您对标题问题的回答是“是”。去真的可以比Python的更快了,甚至没有任何一种编译器弄虚作假像优化掉无副作用环。
- 3 回答
- 0 关注
- 186 浏览
添加回答
举报
0/150
提交
取消