【技术实现步骤摘要】
表格数据字典的处理方法及装置
本专利技术涉及数据处理领域,具体而言,涉及一种表格数据字典的处理方法及装置。
技术介绍
目前市面上有非常多的游戏项目采用python语言作为主要开发语言,这些项目通常会将游戏策划的表格数据导出为python字典对象被游戏所使用,表格数据里的每一项数据也是一个python字典对象。这种结构满足了游戏对表格数据的使用的需求,并且使用字典类型对于python程序员使用更加友好。但是,python字典类型对内存不友好,原因与其底层实现有关。对于python2.7版本的cpython解析器,其字典对象的底层结构包含名为ma_smalltable的大小固定为8的桶数组,当字典的大小小于8的时候,字典的桶数据会被存储到ma_smalltable,当字典大小大于8,ma_smalltable不再存储桶数据,转而动态申请更大的内存块来存储这些桶数据,当然,ma_smalltable也会继续占用着内存,在64位机器上,一个空的字典对象占用248字节;为了减少hash冲突,python也会动态扩容桶数组的大小,当字典的负载因子超过2/3时则会进行扩容。并且,当表格数据变得越多,则表格数据占用的内存也会变多,甚至成为游戏进程的内存瓶颈。针对上述的问题,目前尚未提出有效的解决方案。
技术实现思路
本专利技术实施例提供了一种表格数据字典的处理方法及装置,以至少解决现有技术中的表格数据字典占用资源较多,影响游戏进程的技术问题。根据本专利技术实施例的一个方面,提供了一种表格数 ...
【技术保护点】
1.一种表格数据字典的处理方法,其特征在于,包括:/n基于当前输入的表格数据字典构建压缩数据结构;/n在数据访问过程中,将所述压缩数据结构还原为所述表格数据字典,并通过字典接口和语法糖反馈所述表格数据字典。/n
【技术特征摘要】
1.一种表格数据字典的处理方法,其特征在于,包括:
基于当前输入的表格数据字典构建压缩数据结构;
在数据访问过程中,将所述压缩数据结构还原为所述表格数据字典,并通过字典接口和语法糖反馈所述表格数据字典。
2.根据权利要求1所述的方法,其特征在于,基于所述表格数据字典构建所述压缩数据结构包括:
将所述表格数据字典转化为表格数据列表;
构建所述表格数据列表中不同数据元素之间的父子关系;
根据所述父子关系构建所述压缩数据结构。
3.根据权利要求2所述的方法,其特征在于,构建所述表格数据列表中不同数据元素之间的父子关系包括:
生成步骤,分别为所述表格数据列表中每个数据元素构建集合,生成集合列表;
第一计算步骤,计算当前数据元素与所述集合列表中每个集合的中心数据之间的差异值,将最小差异值的集合确定为备选集合以及将所述最小差异值确定为第一差异值;
第一判断步骤,基于所述当前数据元素的键值对数量与所述第一差异值的比较结果,判断所述当前数据元素是否能够成为所述备选集合的成员;如果是,则继续执行第二判断步骤,如果否,则基于所述当前数据元素构建新的集合,并将所述新的集合加入至所述集合列表;
第二判断步骤,判断所述备选集合是否存在第一层成员;如果否,则基于所述备选集合和所述当前数据元素构建第一父成员并将所述第一父成员加入至第一层成员列表,如果是,则计算所述当前数据元素与所述第一层成员之间的第二差异值,并将第二差异值最小的成员确定为所述当前数据元素的第二父成员;如果所述第二差异值大于所述第一差异值,则基于所述备选集合和所述当前数据元素构建所述第一父成员并将所述第一父成员加入至所述第一层成员列表;如果所述第二差异值小于或等于所述第一差异值,则基于所述第二父成员和所述当前数据元素构建第三父成员并将所述第三父成员加入至第二层成员列表;
第三判断步骤,判断所述表格数据列表中是否存在尚未遍历的数据元素,如果是,则返回所述第一计算步骤,如果否,则得到所述父子关系。
4.根据权利要求3所述的方法,其特征在于,根据所述父子关系构建所述压缩数据结构包括:
第四判断步骤,判断当前集合中的当前成员是否存在父成员对象,如果是,则继续执行第二计算步骤,如果否,则执行第三计算步骤;
所述第二计算步骤,计算所述当前成员与所述父成员对象之间存在差异的键值对,将所述键值对中的第一键存储至第一元组并将所述键值对中的第一值存储至第二元组,以及采用三元组形式对所述父成员对象的标识、所述键值对中的第一键和所述键值对中的第一值进行存储,得到第一元数据;
所述第三计算步骤,计算所述当前成员的键值对,将所述键值对中的第二键存储至第三元组并将所述键值对中的第二值存储至第四元组,以及采用二元组形式对所述键值对中的第二键和所述键值对中...
【专利技术属性】
技术研发人员:陈伟杰,
申请(专利权)人:网易杭州网络有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。