为什么Go需要这么多CPU才能构建一个包?

时间:2016-08-21 13:48:28

标签: go

我从github下载了一个golang包。它是中等大小。当从源代码编译它时,我的计算机变慢了,因为我有多个golang编译过程并且需要大量的cpu。

Golang如何让它进行并发编译? 任何params来转换它在编译时使用的cpu数量?

1 个答案:

答案 0 :(得分:2)

Go正在使用大量CPU,因为它尝试尽可能快地构建,就像任何其他编译器一样。这也可能是因为你正在使用一个使用cgo的软件包,这会大大增加编译时间,因为编译中型到大型C库通常非常密集。

您可以通过设置GOMAXPROCS环境变量来控制Go正在使用的进程数。例如GOMAXPROCS=1 go get ...限制Go只使用1个进程(因而只有1个CPU核心)。但是,这不会影响cgo可能调用的外部编译器使用的进程数。

如果您需要进一步的CPU控制,在基于Unix的系统上,您可以使用nice命令更改进程的优先级,以便其他程序具有更高的CPU优先级,从而减少计算机的负担。