Alb*_*ert -1 deployment optimization performance compilation go
如果我在 Mac 上编译 Go 程序(显然是针对 Linux 架构)并将其推送到 Linux 服务器上运行,会不会有任何性能损失?
我在某处读到 Go 编译器会针对正在编译的特定硬件优化二进制文件,例如用于多线程的 CPU 内核数量等?这是真的吗?
在一台机器上编译 Go 代码并在另一台机器上运行它是否安全(不会降低性能)?
在一台机器上编译 Go 代码并在另一台机器上运行它会降低程序的性能吗?
不。
您的问题表明,针对同一平台,不同的系统可以从同一来源构建不同的二进制文件,但事实并非如此。默认情况下,Go 构建是可重现的,即在构建包时针对相同的平台(由GOOS 和 GOARCH指定)将始终产生完全相同的二进制文件,无论您在何处构建它。这对于能够断言给定的二进制文件实际上是从给定的来源产生是非常重要的。
虽然有可能破坏这种保证(例如,通过使用编译器参数故意在二进制文件中包含时间戳,例如-ldflags '-X main.timestamp=${DATE}'),但这不会以任何可测量的数量影响您的执行速度。