Protobuf-net性能问题

Protobuf-net performance questions

  1. 序列化标记为 DynamicType(输出 NetObjectProxy)的 属性 是否有明显的性能开销?

  2. 将 RuntimeTypeModel 编译为 dll 会比通过 RuntimeTypeModel.Compile() 进行内存编译的性能更好吗?

  3. 手动调用RuntimeTypeModel.Compile()有什么好处吗?

1:您必须使用自己的数据进行测试,但它的效率肯定低得多 - 更多 space 在线,还有更多的事情要做(类型解析等)-此外,它不能将所有内容都 JIT 到一个简单的路径

2:不在我的调查结果中;它确实减少了一点启动时间,但此功能的 key 驱动程序允许 AOT(尽管真正的 AOT 需要单独的跨平台目标,这有点尴尬)。我正在等待 "Roslyn code generators" (https://github.com/dotnet/roslyn/blob/master/docs/features/generators.md) 将来改进 AOT 支持。

3:在某些情况下 - 是;例如,您正在设置一个 service/server,并且您希望在 第一个流量进来之前一切准备就绪,然后再次进入 - 这可能会花费时间 now 以避免稍后稍有延迟;但是:默认情况下它按需编译 anyway