python - Go 真的能比 Python 快那么多吗?

标签 python performance go

我想我可能没有正确地实现这个,因为结果没有意义。我有一个计数到 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/

相关文章:

mysql - 哪个更优化?连接 2 个表或使用表中的附加列

java - android gomobile 上的 "Unsupported flags DT_FLAGS_1=0x9"错误

Ghost.py 的 Python 奇怪问题

python - 在元组列表中搜索部分匹配项

c - 用汇编代替c代码提高性能的简单例子是什么?

用于谷歌云存储的 Golang SDK : Multipart download

variables - 在范围循环中递增结构变量

python - 如何使用 Selenium 和 Python 从下拉菜单中选择选项

python - 如何使用 Ajax 检查 django-celery 任务的状态和结果?

sql - 模糊时间戳加入 Postesql 并获得更好的速度