开发学院

您的位置:首页>教程>正文

教程正文

Protocol Buffer C++实例教程: 优化技巧和高级用法

优化技巧

  C++Protocol Buffer库被极度优化。然而,正确的使用可以进一步提高性能。以下是一些榨干Protocol Buffer性能的技巧:

  尽可能重用消息对象。消息试图保留它们分配给重用的任何内存,即使它们被清除了。因此,如果您正在连续处理许多具有相同类型和相似结构的消息,那么每次从内存分配器中卸载时重用相同的消息对象是一个好主意。然而,随着时间的推移,对象可能会变得臃肿,尤其是如果你的信息在“shape”中有所不同,或者你偶尔会构建一个比平时大得多的信息。您应该通过调用SpaceUsed方法来监控消息对象的大小,并在它们变得太大时将其删除。。

  您系统的内存分配器可能没有很好地优化,无法从多个线程中分配大量小对象。试试使用谷歌的tcmalloc。

高级用法

  Protocol buffer的用途超出了简单访问器和序列化。请务必浏览C++应用编程接口参考,看看您还可以用它们做些什么。

  协议消息类提供的一个关键特性是反射。您可以迭代消息的字段并操作它们的值,而无需针对任何特定的消息类型编写代码。使用反射的一个非常有用的方法是将协议消息转换成其他编码,如XML或JSON。反射的一个更高级的用途可能是发现相同类型的两个消息之间的差异,或者开发一种“协议消息的正则表达式”,在这种表达式中,您可以编写与某些消息内容匹配的表达式。如果你发挥想象力,就有可能将Protocol buffer应用到比你最初预期的更广泛的问题上!

  反射由Message::Reflection接口提供。