使用Lua Table 解码 编码 PB协议,效率比较低,主要是因为需要lua内部字符串比较 和 跨lua和c之间的 Int解码操作,比较消耗
如果从C++部分,直接访问lua虚拟机内部的 Table数据结构,以及使用lua字符串自带的hash值,来做比较,效率会有比较大提升
例如原始需要5000ms 处理编码一个Lua table 为PB, 在纯C++访问luaTable和字符串hash 下,可能只需要300ms左右
但是C++序列化协议,导致协议很难热升级,可以单独将自动生成的协议相关处理代码做成dll, 主程序只需要从dll 中获得一个函数接口
即Pack (luaState) lua栈顶, 压入luaTable 和对应的协议名称字符串 即可