使用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 和對應的協議名稱字符串 即可