为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 NATS Golang 客户端在导入后会增加 5MB 的可执行文件大小?

为什么 NATS Golang 客户端在导入后会增加 5MB 的可执行文件大小?

Go
杨__羊羊 2023-01-03 17:16:10
我正在为即将开展的项目评估 NATS。为什么要测试它 当我为 NATS 客户端添加导入行并使用库中的一些简单调用时,我注意到编译后的可执行文件的大小从大约 2MB 变为 7MB。我使用的是 Linux Mint 20.3,Golang 1.18,NATS 库是:github.com/nats-io/nats.go v1.16.0谁能解释为什么只应该与服务器接口的库会向二进制文件添加如此大量的代码?有什么办法可以减少这种情况吗?
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

这种情况并不少见。您导入的代码不仅是接口,还包括所有接口实现和依赖项。Golang 不会对使用的导入进行 treeshake(如果这样做会很好),导致所有未使用的代码也被导入和编译。

您会看到这种增加的其他示例是例如导入 kubernetes go mods 增加了 ~12MB,或使用 librdkafka kafka(几 MB)

您可以使用编译器标志来减少增长:

go build -ldflags "-s -w"

它取出了一些调试信息,并且可以再次减小尺寸。

您看到的尺寸减小(如果有的话)不仅仅是来自 NATS 导入。它也可能来自其他进口商品(如果您想查看这些标志的真正影响,请进行基准测试)



查看完整回答
反对 回复 2023-01-03
  • 1 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信