使用谷歌的协议缓冲编译器进行c ++时,不清楚哪个更快:优化速度:
option optimize_for = SPEED;
或优化灯光运行时间:
option optimize_for = LITE_RUNTIME;
如果速度更快,是什么让它更快? 有没有人有关于这个问题的硬数据?
答案 0 :(得分:17)
我阅读documentation,
的方式针对CODE_SIZE进行优化不会为所有内容生成快速访问器方法,但依赖于慢速反射,
针对SPEED优化将为您提供快速访问者
并优化LITE_RUNTIME也会为您提供快速访问,但不支持protobuf的全部功能,但只支持较轻的子集protobuf-lite。基本上,这意味着描述符或反射不可用。
所以我猜,LITE_RUNTIME并不比SPEED慢,你应该根据你想要的运行库(精简或全部)来选择。
如果速度更快,是什么让它更快?
与CODE_SIZE相比,SPEED更快,因为它使用自动生成的代码而不是运行时反射。