使用 -race 标志构建 go 程序是否有任何性能损失?

我想知道在使用构建的生产环境中运行 go 程序是否有任何性能损失

go build -race


繁星淼淼
浏览 82回答 1
1回答

烙印99

您可以在https://go.dev/doc/articles/race_detector上描述 go race detector 的文章中阅读它引用那篇文章(最后一段):运行时开销竞争检测的成本因程序而异,但对于典型程序,内存使用量可能增加 5-10 倍,执行时间可能增加 2-20 倍。竞争检测器目前为每个延迟和恢复语句额外分配 8 个字节。在 goroutine 退出之前,这些额外的分配不会被回收。这意味着,如果您有一个长时间运行的 goroutine,它会定期发出 defer 和 recover 调用,程序内存使用量可能会无限增长。这些内存分配不会显示在 runtime.ReadMemStats 或 runtime/pprof 的输出中。
打开App,查看更多内容
随时随地看视频慕课网APP