zoukankan      html  css  js  c++  java
  • 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 模式优化。

  • 相关阅读:
    排序算法之冒泡排序
    hadoop程序启动
    开播小记
    3.3面向对象封装案例1摆家具
    3.2面向对象基础语法
    3.1类和对象
    2.12函数进阶
    2.11变量的引用_可变不可变类型_局部变量和全局变量
    2.10第二章综合应用_名片管理系统
    2.8函数基础
  • 原文地址:https://www.cnblogs.com/davad/p/4871010.html
Copyright © 2011-2022 走看看