[专栏作家] 使用xlua读取lua数据表性能分析
Posted 游戏蛮牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[专栏作家] 使用xlua读取lua数据表性能分析相关的知识,希望对你有一定的参考价值。
使用xlua读取lua策划数据表性能分析
使用的lua表
1
测试代码
Table对应数据Class
2
1.第一次DoString开销比较大,主要在File的操作。解决方案:所有lua文件做成大文件,File的open操作打开一次,持有句柄。(test===1)
2.重复Get已经DoString的表仍然有1K的GC,主要在LuaTable.Get操作里。解决方案:在LuaDataInfo里有个Marshal,用来序列化数据,并且能保证只Get一次表。每个表有一个static的表名和LuaTable对表的引用。(test===2)
3.重复获取同一个index的子表,GC开销较大,主要在Activator.CreateInstance里。解决方案:缓存已经读取的子表,每次先从字典里查找,找到直接返回,找不到再走整个读取流程(test===4~8)
4.返回缓存的子表,GC仍然不可忽略,60B。由于我使用的是type的name做key,所以会有一个字符串60B的开销,后面直接用type做key,可以省略这部分开销,但是时间略有消耗
3
优化点:
1.分表,将大的数据表分成多个
2.读取表的时候,按字段读取,而不是一次性解析整条数据
3.预加载一些道具、活动、任务表
4.注意缓存表的内存占用
5.注意lua堆栈
以上是关于[专栏作家] 使用xlua读取lua数据表性能分析的主要内容,如果未能解决你的问题,请参考以下文章