#781·protobuf

proto: 为提高性能而专门定义 map<string, string>

作者: jmillikin-stripe创建于 2019年1月8日更新于 2026年8月2日
标签performance

背景: https://GitHub.com/golang/protobuf/issues/624 目前,映射字段的序列化采用了基于反射的缓慢路径。对于一般情况来说这是可以理解的(嵌套消息很难处理),但有一些特殊情况,映射字段被大量使用,而快速的路径将会非常有价值。我的具体用例是一个 map<string, string>,用于表示分布式监控系统中任意的人类可理解的元数据(类似于 Prometheus)。基准测试表明,我们的工具在返回 proto.makeMapMarshaler 的闭包中花费了大量的 CPU 时间。

内容来源: golang/protobuf