[发明专利]一种对象数据的构建方法和装置在审
申请号: | 201810956407.X | 申请日: | 2018-08-21 |
公开(公告)号: | CN108984310A | 公开(公告)日: | 2018-12-11 |
发明(设计)人: | 蔺昊天 | 申请(专利权)人: | 郑州云海信息技术有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F8/20 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 王宝筠 |
地址: | 450018 河南省郑州市*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 对象数据 构建 索引数据 方法和装置 存储地址 内存分配 分配内存空间 记录对象数据 成员分配 定义内存 分配模型 内核开销 一次性 内存 写入 申请 | ||
本申请实施例公开了一种对象数据的构建方法和装置,其中,该方法包括:定义内存分配模型,将对象数据包含的成员数量和各个成员的长度输入该内存分配模型,该内存分配模型能够根据输入的成员数量以及成员的长度,为该对象数据分配内存空间;根据对象数据包含的成员数量在内存空间中构建索引数据,该索引数据用于记录对象数据中各个成员在内存空间中的存储地址;并将各个成员对应的存储地址写入索引数据中。该对象数据的构建方法,能够一次性地为对象数据的所有成员分配内存,减少构建对象数据时需要耗费的内核开销。
技术领域
本申请涉及程序设计技术领域,特别是涉及一种对象数据的构建方法和装置。
背景技术
在服务器开发、大数据计算等领域的程序设计中,经常运用分层设计划分模块,如常见的网络层-业务层-数据库层架构。为了提高性能,各层级常采用多线程、线程池等技术,并列使用队列数据结构存取对象数据,上下层之间互相传递不同粒度的数据,附加到对应线程的队列中。
现有技术中,在C/C++中常用的对象数据的构建方法为:生产者逐一为对象数据中每个成员申请对应的内存空间,进而,利用申请的各个内存空间存储各个成员,由此构成完整的对象数据。然而,在构建对象数据的过程中,生产者往复多次为每个成员申请内存空间,将增加大量的内核开销,由此可能影响对象数据的传输效率。
发明内容
为了解决上述技术问题,本申请提供了一种对象数据的构建方法,能够一次性地为对象数据的所有成员分配内存,减少构建对象数据时需要耗费的内核开销。
本申请实施例公开了如下技术方案:
第一方面,本申请实施例提供了一种对象数据的构建方法,所述方法包括:
定义内存分配模型;
将对象数据包含的成员数量和各个成员的长度输入所述内存分配模型,以使所述内存分配模型根据所述成员数量和所述各个成员的长度,为所述对象数据分配内存空间;
根据所述成员数量在所述内存空间中构建索引数据,所述索引数据用于记录所述各个成员在所述内存空间中的存储地址;
将所述各个成员对应的存储地址写入所述索引数据。
可选的,所述方法还包括:
根据不同的业务,定义不同的所述对象数据的对外数据结构;所述对外数据结构中包括所述索引数据。
可选的,所述对外数据结构包括:对象化索引列表或索引数组。
可选的,所述内存分配模型引用外部分配函数,根据所述成员数量和所述各个成员的长度为所述对象数据分配内存空间;所述分配函数存在与其对应的回收函数;
所述方法还包括:
在所述对象数据使用完成后,利用所述回收函数根据所述内存空间的首地址回收所述对象数据。
可选的,所述内存分配模型引用自定义的分配函数,根据所述成员数量和所述成员的长度为所述对象数据分配内存空间;所述分配函数存在与其对应的自定义的回收函数;
所述方法还包括:
在所述对象数据使用完成后,利用所述自定义的回收函数根据所述内存空间的首地址回收所述对象数据,所述自定义的回收函数包括:具有释放数据结构功能的函数,或者,具有删除功能的重载函数。第二方面,本申请实施例提供了一种对象数据的构建装置,所述装置包括:
定义模块,用于定义内存分配模型;
输入模块,用于将对象数据包含的成员数量和各个成员的长度输入所述内存分配模型,以使所述内存分配模型根据所述成员数量和所述各个成员的长度,为所述对象数据分配内存空间;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州云海信息技术有限公司,未经郑州云海信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810956407.X/2.html,转载请声明来源钻瓜专利网。