1

我们在 .netcf 目标上使用 Probuf。一切正常。我开始使用静态的 [ProtoContract]、[ProtoMember, 1].. 等。我的同事担心给类对象增加潜在的开销,所以我切换到使用 .add(# , " ") 的运行时模型,这似乎更多与相关班级“断开连接”。我实际上更喜欢类中的静态标签,因为如果稍后重构变量名称,名称就会固有地更新。由于我不知道 protobuf 在幕后如何或做什么,在开销、速度等方面,使用静态标签与运行时模型有什么优点或缺点吗?

谢谢!

4

1 回答 1

0

我没有对这方面进行广泛的描述——主要是因为反射属性的任何开销都只完成一次。冷启动性能可能略有不同,但是:如果您的目标是最终的启动性能,您最好尝试使用 google-code 下载中提供的预编译器。这适用于属性模型,但具有使用预编译模型时在运行时不会发生任何反射的优点。它还将生成纯 IL,因为 CF 通常非常受限制,因此 IIRC 运行时使用被迫使用一些反射,即使对于成员访问之类的事情也是如此。最后,这意味着您可以使用“CoreOnly”而不是“Full”构建,后者更小、更简单。

http://marcgravell.blogspot.co.uk/2012/07/introducing-protobuf-net-precompiler.html

于 2013-10-23T22:58:53.743 回答