【发布时间】:2021-08-13 19:56:46
【问题描述】:
如果我在 Mac 上编译 Go 程序(显然是针对 Linux 架构)并将其推送到 Linux 服务器上运行,会不会有任何性能损失?
我在某处读到 Go 编译器会针对正在编译的特定硬件优化二进制文件,例如用于多线程的 CPU 内核数量等?是真的吗?
在一台机器上编译 Go 代码并在另一台机器上运行它是否安全(不会降低性能)?
【问题讨论】:
-
是的,这是安全的。
-
不是编译器,而是运行时根据其运行的硬件调整调度程序的细节。
-
Go 当然不会针对构建它的机器上的内核数量优化二进制文件。如果您的执行环境包含较少的内核,性能可能会下降,但这是因为内核较少,而不是因为二进制文件没有针对较少数量的内核进行优化。同样,如果您将相同的二进制文件移动到具有更多内核的环境中,那么使用所有可用内核也不会出现问题。
标签: performance go optimization deployment compilation