protobuf 文件级别优化

简介: protobuf 文件级别优化

package IM.BaseDefine;

option java_package = "com.mogujie.tt.protobuf";

option optimize_for = LITE_RUNTIME;


// service id
enum ServiceID{
  SID_LOGIN = 0x0001; // for login
  SID_BUDDY_LIST = 0x0002; // for friend list
  SID_MSG = 0x0003; //
  SID_GROUP = 0x0004; // for group message
  SID_FILE = 0x0005;
  SID_SWITCH_SERVICE = 0x0006;
  SID_OTHER = 0x0007;
  SID_INTERNAL = 0x0008;
}


  option optimize_for = LITE_RUNTIME;

     optimize_for是文件级别的选项,Protocol Buffer定义三种优化级别SPEED/CODE_SIZE/LITE_RUNTIME。缺省情况下是SPEED。


     SPEED: 表示生成的代码运行效率高,但是由此生成的代码编译后会占用更多的空间。


     CODE_SIZE: 和SPEED恰恰相反,代码运行效率较低,但是由此生成的代码编译后会占用更少的空间,通常用于资源有限的平台,如Mobile。


     LITE_RUNTIME: 生成的代码执行效率高,同时生成代码编译后的所占用的空间也是非常少。这是以牺牲Protocol Buffer提供的反射功能为代价的。因此我们在C++中链接Protocol Buffer库时仅需链接libprotobuf-lite,而非libprotobuf。在Java中仅需包含protobuf-java-2.4.1-lite.jar,而非protobuf-java-2.4.1.jar。


     SPEED和LITE_RUNTIME相比,在于调试级别上,例如 msg.SerializeToString(&str) 在SPEED模式下会利用反射机制打印出详细字段和字段值,但是LITE_RUNTIME则仅仅打印字段值组成的字符串;

 

    因此:可以在程序调试阶段使用 SPEED模式,而上线以后使用提升性能使用 LITE_RUNTIME 模式优化。

目录
相关文章
|
7月前
|
存储 Go
Go 浅析主流日志库:从设计层学习如何集成日志轮转与切割功能
本文将探讨几个热门的 go 日志库如 logrus、zap 和官网的 slog,我将分析这些库的的关键设计元素,探讨它们是如何支持日志轮转与切割功能的配置。
289 0
Go 浅析主流日志库:从设计层学习如何集成日志轮转与切割功能
|
JSON 中间件 Go
Golang高性能日志库zap + lumberjack 日志切割组件详解
Golang高性能日志库zap + lumberjack 日志切割组件详解
1593 0
Golang高性能日志库zap + lumberjack 日志切割组件详解
|
4月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
7月前
|
数据库
protobuf 设计,避免频繁打包更新
protobuf 设计,避免频繁打包更新
64 0
|
C++ 容器
使用protobuf的简单流程记录、编译protobuf时遇到的坑 以及 链接protobuf的坑
使用protobuf的简单流程记录、编译protobuf时遇到的坑 以及 链接protobuf的坑
330 0
|
Java easyexcel 关系型数据库
EasyExcel 百万级别数据高效率导入/导出(下)
EasyExcel 百万级别数据高效率导入/导出
1054 0
|
存储 SQL Java
EasyExcel 百万级别数据高效率导入/导出(上)
EasyExcel 百万级别数据高效率导入/导出
3940 0
|
JSON Go API
如何基于 zap 封装一个更好用的日志库
如何基于 zap 封装一个更好用的日志库
565 0
|
移动开发 Go
GO 利用bufio包(流式操作) - 并发写文件/读文件示例
GO 利用bufio包(流式操作) - 并发写文件/读文件示例
653 0
GO 利用bufio包(流式操作) - 并发写文件/读文件示例
|
安全 Go
字节RPC框架Kitex的日志库klog竟然也这么小巧!
这篇文章将着重于分析字节跳动开源的RPC框架Kitex的日志库klog的源码,通过对比Go原生日志库log的实现,探究其作出的改进。
270 0
字节RPC框架Kitex的日志库klog竟然也这么小巧!