Golang在Windows下运行速度较慢

13
package main

import "fmt"

func main() {
    fmt.Println("Hello world")
}

该命令是 go run a.go


在Windows系统中,此代码需要4~5秒钟的时间。


环境是 Windows 64,Go 1.5rc1。 - Jianjian Yang
6
"go run a.go" 运行较慢是因为它需要编译代码然后再运行。尝试使用"go build"或"go install",这将生成一个可执行文件(a.exe)。现在尝试运行这个.exe文件,你会立即看到结果被打印出来。 - icza
10
不知道为什么这个问题会有那么多的踩。 是的,它有点不够具体,但在 Windows 平台上,“go run”确实非常慢,即使是最新版本也是如此。我认为@ZanLynx答案的第二部分是原因。 - kumarharsh
如果您已经安装了Git bash,只需使用它来代替Powershell或命令提示符即可几乎瞬间运行。 - quasoft
5
带有实时保护功能的杀毒软件也可能会成为减慢计算机速度的潜在因素。这正是我情况的问题所在。 - quasoft
Windows中的I/O(特别是NTFS)通常非常缓慢,原因有很多:https://github.com/Microsoft/WSL/issues/873#issuecomment-425272829 - Joppe
1个回答

5
我认为go run会将代码编译并运行。Go 1.5在编译速度方面被认为要慢很多。(请阅读发行说明) 开发人员已经将其全部转换为Go代码,但还没有为Go进行优化。
此外, Go使用POSIX风格的磁盘和网络操作。我不相信有人已经针对完成端口和Windows异步IO对Go进行了优化。

我怀疑在这样一个简单程序中,1.4和1.5之间的编译时间影响几乎可以忽略不计。影响可能与Windows命令行有关,但没有更多信息(OP是否运行了1.4?它是更好的吗?)这些只是猜测。 - elithrar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接