表格数据字典的处理方法及装置制造方法及图纸

技术编号:24331636 阅读:33 留言:0更新日期:2020-05-29 19:52
本发明专利技术公开了一种表格数据字典的处理方法及装置。其中,该方法包括:基于当前输入的表格数据字典构建压缩数据结构;在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典。本发明专利技术解决了现有技术中的表格数据字典占用资源较多,影响游戏进程的技术问题。

Processing method and device of table data dictionary

【技术实现步骤摘要】
表格数据字典的处理方法及装置
本专利技术涉及数据处理领域,具体而言,涉及一种表格数据字典的处理方法及装置。
技术介绍
目前市面上有非常多的游戏项目采用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是根据本专利技术实施例的一种表格数据字典的处理方法的流程图;图2是根据本专利技术实施例的一种可选的表格数据字典的处理方法的流程图;图3是根据本专利技术实施例的一种可选的表格数据字典的处理方法的流程图;图4是根据本专利技术实施例的一种表格数据字典的处理装置的结构示意图。具体实施方式为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。需要说明的是,本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本专利技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。首先,为方便理解本专利技术实施例,下面将对本专利技术中所涉及的部分术语或名词进行解释说明:id:是指表格数据中每一项数据的唯一标识。cpython:用C语言实现的Python解释器,是最广泛使用的Python解释器。ma_smalltable:字典类型C结构体的属性之一,当字典大小小于8,ma_smalltable会存储桶数据。table_dict:一个字典对象,存储着表格的数据,作为算法的输入对象。table_list:由table_dict里面的每一项数据构成的列表对象。cluster_list:由算法得到的列表对象,里面存储着算法计算得到的集合对象。data:算法需要遍历表格的每一项数据,data作为遍历过程中每一项数据的中间名字。member:由一项数据构造得到的成员对象。cluster:由一项数据构造得到的集合对象。keys,values:keys是某项数据的部分或所有键的元组,values是键对应的值元组,keys和values通常一起出现,通过元组下标对应。实施例1根据本专利技术实施例,提供了一种表格数据字典的处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。图1是根据本专利技术实施例的一种表格数据字典的处理方法的流程图,如图1所示,该方法包括如下步骤:步骤S102,基于当前输入的表格数据字典构建压缩数据结构;步骤S104,在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典。在本专利技术实施例中,采用自定义字典类型的方式,通过基于当前输入的表格数据字典构建压缩数据结构;在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典,达到了以更节省内存资源的数据结构来存储表格数据字典,并且提供与表格数据字典相同的字典接口和语法糖满足表格数据使用需求的目的,从而实现了有效节省表格数据字典占用资源的技术效果,进而解决了现有技术中的表格数据字典占用资源较多,影响游戏进程的技术问题。为了解决现有技术中存在的技术问题,本申请实施例提供一种更节省内存的压缩数据结构,通过基于当前输入的表格数据字典构建压缩数据本文档来自技高网
...

【技术保护点】
1.一种表格数据字典的处理方法,其特征在于,包括:/n基于当前输入的表格数据字典构建压缩数据结构;/n在数据访问过程中,将所述压缩数据结构还原为所述表格数据字典,并通过字典接口和语法糖反馈所述表格数据字典。/n

【技术特征摘要】
1.一种表格数据字典的处理方法,其特征在于,包括:
基于当前输入的表格数据字典构建压缩数据结构;
在数据访问过程中,将所述压缩数据结构还原为所述表格数据字典,并通过字典接口和语法糖反馈所述表格数据字典。


2.根据权利要求1所述的方法,其特征在于,基于所述表格数据字典构建所述压缩数据结构包括:
将所述表格数据字典转化为表格数据列表;
构建所述表格数据列表中不同数据元素之间的父子关系;
根据所述父子关系构建所述压缩数据结构。


3.根据权利要求2所述的方法,其特征在于,构建所述表格数据列表中不同数据元素之间的父子关系包括:
生成步骤,分别为所述表格数据列表中每个数据元素构建集合,生成集合列表;
第一计算步骤,计算当前数据元素与所述集合列表中每个集合的中心数据之间的差异值,将最小差异值的集合确定为备选集合以及将所述最小差异值确定为第一差异值;
第一判断步骤,基于所述当前数据元素的键值对数量与所述第一差异值的比较结果,判断所述当前数据元素是否能够成为所述备选集合的成员;如果是,则继续执行第二判断步骤,如果否,则基于所述当前数据元素构建新的集合,并将所述新的集合加入至所述集合列表;
第二判断步骤,判断所述备选集合是否存在第一层成员;如果否,则基于所述备选集合和所述当前数据元素构建第一父成员并将所述第一父成员加入至第一层成员列表,如果是,则计算所述当前数据元素与所述第一层成员之间的第二差异值,并将第二差异值最小的成员确定为所述当前数据元素的第二父成员;如果所述第二差异值大于所述第一差异值,则基于所述备选集合和所述当前数据元素构建所述第一父成员并将所述第一父成员加入至所述第一层成员列表;如果所述第二差异值小于或等于所述第一差异值,则基于所述第二父成员和所述当前数据元素构建第三父成员并将所述第三父成员加入至第二层成员列表;
第三判断步骤,判断所述表格数据列表中是否存在尚未遍历的数据元素,如果是,则返回所述第一计算步骤,如果否,则得到所述父子关系。


4.根据权利要求3所述的方法,其特征在于,根据所述父子关系构建所述压缩数据结构包括:
第四判断步骤,判断当前集合中的当前成员是否存在父成员对象,如果是,则继续执行第二计算步骤,如果否,则执行第三计算步骤;
所述第二计算步骤,计算所述当前成员与所述父成员对象之间存在差异的键值对,将所述键值对中的第一键存储至第一元组并将所述键值对中的第一值存储至第二元组,以及采用三元组形式对所述父成员对象的标识、所述键值对中的第一键和所述键值对中的第一值进行存储,得到第一元数据;
所述第三计算步骤,计算所述当前成员的键值对,将所述键值对中的第二键存储至第三元组并将所述键值对中的第二值存储至第四元组,以及采用二元组形式对所述键值对中的第二键和所述键值对中...

【专利技术属性】
技术研发人员:陈伟杰
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1