【发布时间】:2017-03-27 22:43:31
【问题描述】:
序列化标记为 DynamicType(输出 NetObjectProxy)的属性是否存在明显的性能开销?
将 RuntimeTypeModel 编译为 dll 会比通过
RuntimeTypeModel.Compile()在内存中编译的性能更好吗?手动调用
RuntimeTypeModel.Compile()有什么好处吗?
【问题讨论】:
标签: c# protocol-buffers protobuf-net
序列化标记为 DynamicType(输出 NetObjectProxy)的属性是否存在明显的性能开销?
将 RuntimeTypeModel 编译为 dll 会比通过 RuntimeTypeModel.Compile() 在内存中编译的性能更好吗?
手动调用RuntimeTypeModel.Compile()有什么好处吗?
【问题讨论】:
标签: c# protocol-buffers protobuf-net
1:您必须使用自己的数据进行测试,但它的效率肯定要低得多 - 线路上的空间更大,要做的事情更多(类型解析等) - 而且它不能只是将所有内容 JIT 到一个简单的路径
2:不在我的发现中;它确实减少了一点启动时间,但是这个功能的 key 驱动程序是允许 AOT(虽然真正的 AOT 需要单独的跨平台定位的东西,这有点尴尬)。我正在等待“Roslyn 代码生成器”(https://github.com/dotnet/roslyn/blob/master/docs/features/generators.md),以便将来改进 AOT 支持。
3:在某些情况下 - 是的;例如,您正在设置一个服务/服务器,并且您希望一切准备就绪在第一个流量进来之前,然后再次 - 这可以花时间现在避免稍后稍有延迟;但是:默认情况下它会按需编译无论如何
【讨论】: