如果你围绕这些问题设计一个proto schema,会严重影响可读性……
……如果你围绕这些问题设计一个proto schema,为了绕过Go protobuf本身的糟糕实现决策,你可能会严重影响可读性和可维护性。我曾经做过这种优化,但当我的团队看到基准测试数据后,他们认为这是值得的。在技术项目中,你并不希望做出这样的决定,但我要强调的是,在许多情况下,这仍然是正确的选择。Rust的prost crate并不是官方的,但它已经让你对schema有更多控制。你可以在技术上使用自己的Rust代码而不是生成的代码,不过我还没看到有人真的这么做,而且这似乎也不被鼓励。无论如何,我最大的问题在于prost使得共享子消息变得困难(或可能目前不可能)使用Arc [2],而另一方面,使用Go只需使用*就可以轻松实现。虽然prost在更多情况下避免了分配,但根据我的经验,它避免复制的次数更少,而其中一些复制仍然需要分配。……
源讨论揭秘protobuf的wire格式原帖 71 条评论 · 导入时统计