protobuf-net与protobuf-csharp-port的性能

Ste*_*han 3 protocol-buffers protobuf-net

我知道这两个库的功能和设计,但我没有找到这两者之间的任何直接性能比较.两者都绝对是很好的库.关于设计,我认为protobuf-csharp-port由于反射较少而应该稍快一点,对吧?

此外:

  • protobuf-net V2什么时候发布?任何计划,马克?
  • 会不会有新版本的protobuf-csharp-port,Jon?

谢谢.

Mar*_*ell 7

再表现; protobuf-net旨在尽可能少地执行该反射,之后创建高效的数据访问代码.在V2,它需要这么多进一步在许多方面-采用低级别的元编程,并且如果你想它(完全可选的),一个独立的串行DLL的前一代, -所以在运行时,反射的成本是最小的之间的某处(如果使用运行时元编程)为nil(如果使用预生成).

重新释放; "准备好了"; 生活是疯狂的忙碌,但完整的.NET和iPhone都可以使用alpha dll(后者可能适用于大多数较轻的运行时,因为iPhone是最严格的).最终,现实是(作为非赞助等),它将落后于工作和家庭等一些事情 - 尽管如此,我试图找时间.

我认为比较合理的是目标 ; protobuf-net旨在轻松安装到您现有的DTO或域模型上,无需进行大量返工 - 或用于代码优先方案.它还支持 .proto的生成,但这不是主要目标(但当然非常需要).它还运行一个非常不同的API,围绕常见的.NET隐喻,而不是常见的protobuf隐喻.

或者换一种说法:

  • protobuf-csharp-port专注于protobuf,并将C#/ .NET添加到现有的protobuf景观中
  • protobuf-net专注于C#/ .NET,并将protobuf添加到现有的C#/ .NET环境中

可能是一个微妙的区别 - 实际上要么是为.NET制作一个有价值的序列化API.

作为必然结果,如果您的主要目标是在同一团队中积极工作的异构环境之间进行互操作 - 那么protobuf-csharp-port可能更适合您.

我也有点......松散地使用protobuf,所以我没有(好的,最小的)内疚有点超出标准规范(在保留协议定义的同时)在继承,全图,等 - 这在.NET生态系统中很常见,但在protobuf中没有直接映射.当然,我可以更多地看待像WCF这样的工具(在较小程度上:远程处理).

  • @Stephan他们很可能是同一个球场; 取决于编码的实现方式可能会导致任一方向的差异.但是,在这两种情况下,真正的瓶颈是带宽(磁盘或网络).两者在电线上应该几乎相同.简而言之,两者都"明显"更快或更慢.尽管如此,请随意介绍. (2认同)