提高string字符串存储效率的方法、装置、电子设备及计算机可读存储介质制造方法及图纸

技术编号:19176588 阅读:17 留言:0更新日期:2018-10-17 00:13
本发明专利技术涉及一种提高string字符串存储效率的方法、装置、电子设备及计算机可读存储介质,所述方法为:在C++项目开发中,定义结构体,保存优化string对象的内存数据,采用字符串拆分函数,根据string对象数据字节大小进行分类,并进行相应的内存处理,所述方法将减少string对象由赋值操作产生的内存占用和性能消耗,提高存储效率。

Method, device, electronic device and computer readable storage medium for improving string string storage efficiency

The invention relates to a method, device, electronic equipment and computer readable storage medium for improving string string storage efficiency. The method is as follows: in C++ project development, the structure is defined, the memory data of optimized string object is saved, and the string splitting function is adopted to divide the string object according to the size of data bytes. Class, and the corresponding memory processing, the method will reduce the string object by assignment operation generated memory footprint and performance consumption, improve storage efficiency.

【技术实现步骤摘要】
提高string字符串存储效率的方法、装置、电子设备及计算机可读存储介质
本专利技术涉及计算机
,具体涉及一种提高string字符串存储效率的方法、装置、电子设备及计算机可读存储介质。
技术介绍
String是C++编程语言中的字符串类型,主要用于字符串处理,在C++项目开发过程中,string是最常用的容器,其中string使用方便,整合较多的字符串的操作,使用率高,性能至关重要,常用的表达形式为std::string类,此表达形式为标准的C++的字符串实现方式,使用此标准形式便于程序的移植,但使用过程中还是存在一些缺点,如占用内存容量大,如果发生对象赋值操作,就会造成多次内存拷贝消耗。
技术实现思路
鉴于现有技术存在的问题,本专利技术的目的是提供一种提高string字符串存储效率的方法、装置、电子设备及计算机可读存储介质,采用优化的string对象的内存模型,采用分层存储策略,减少string对象的内存占用和性能消耗。为了实现上述目的,本专利技术采用的技术方案为一种提高string字符串存储效率的方法,所述方法包括以下步骤:S1、定义结构体,用于保存并处理string对象的数据;S2、调用字符串分类函数,将S1中处理后的string对象数据按照字节大小分类,得到string对象各类别;S3、将步骤S2中得到的各类别进行对应内存处理。在上述技术方案中,所述步骤S1中,所述结构体包括data字段、size字段、capacity字段,其中:data字段为string对象数据;size字段为string对象的大小;capacity字段为string对象的容量大小。在上述技术方案中,所述步骤S2中,所述string对象数据类别包括字节数小于第一预设数值、字节数为第二预设数值与第三预设数值之间以及字节数大于第三预设数值,其中,第一预设数值小于第二预设数值,第二预设数值小于第三预设数值,其中:S21、字节数小于第一预设数值时,string对象数据直接放置于string对象内部,将内存分配至栈上;S22、字节数为第二预设数值与第三预设数值之间时,申请新的内存,动态内存分配函数分配堆内存,根据S1中定义的结构体保存string对象数据;S23、字节数大于第三预设数值时,用引用计数,对string对象数据进行拷贝和处理。在上述技术方案中,所述步骤S23,包括以下步骤:S231、调用创建引用计数函数为每个string对象数据创建引用计数;S232、当string对象数据进行赋值操作时,调用增加引用计数函数将S231中创建的引用计数加1;S233、当不再使用string对象数据时,调用释放引用计数函数将引用计数减1;S234、当引用计数为0时,自动删除string对象的内存。本专利技术还公开一种提高string字符串存储效率的装置,所述装置包括:定义模块,用于定义结构体,用于保存并处理string对象的数据;分类模块,用于调用字符串分类函数,将定义模块中处理后的string对象数据按照字节大小分类,得到string对象各模块;处理模块,将分类模块得到的各模块进行对应内存处理。在上述技术方案中,所述定义模块中的结构体包括data字段、size字段、capacity字段,其中:data字段为string对象的数据;size字段为string对象的大小;capacity字段为string对象的容量大小。在上述技术方案中,所述分类模块中,包括第一存储模块、第二存储模块以及第三存储模块,其中:第一存储模块,字节数小于第一预设数值时,直接放置于string对象内部,将内存分配至栈上;第二存储模块,字节数为第二预设数值与第三预设数值之间时,申请新的内存,动态内存分配函数分配堆内存,根据定义模块中定义的结构体保存string对象数据;第三存储模块,字节数大于第三预设数值时,用引用计数,对内存拷贝并进行处理。在上述技术方案中,所述第三存储模块中,包括以下模块:创建模块,调用创建引用计数函数为每个string对象创建引用计数;赋值模块,当string对象产生赋值操作时,调用增加引用计数函数将创建模块中创建的引用计数加1,当不再使用string对象时,调用释放引用计数函数将引用计数减1;删除模块,当引用计数为0时,自动删除string对象的内存。本专利技术还公开一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述提高string字符串存储效率的方法的步骤。本专利技术还公开一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述提高string字符串存储效率的方法的步骤。本专利技术一种提高string字符串存储效率的方法及系统,具有以下有益效果:在C++项目开发中,采用优化过的string对象内存存储策略,可以有效的提高string对象的内存占用,并减少string对象由于赋值操作产生的内存拷贝消耗。附图说明图1为本专利技术实施例一提供的一种提高string字符串存储效率的方法流程示意图;图2本专利技术实施例二提供的string对象分类实现方法流程示意图;图3为本专利技术实施例三提供的一种提高string字符串存储效率的引用计数方法流程示意图;图4为本专利技术实施例四提供的一种提高string字符串存储效率的装置模块示意图;图5为本专利技术实施例五提供的一种提高string字符串存储效率的电子设备结构示意图。具体实施方式本专利技术提供一种提高string字符串存储效率的方法、装置、电子设备及计算机可读存储介质,用于减少string对象的内存占用和性能消耗。为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。本专利技术实施例一提供一种提高string字符串存储效率的方法,如图1所示,所述方法包括以下步骤:S1、定义结构体,用于保存并处理string对象的数据;所述结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,定义一个结构体,需先声明结构体类型再定义变量名,定义结构体变量后,系统为之分配内存单元。可选的,本专利技术实施例中定义一个结构体保存string对象数据,编译器会分配空间,按照结构体的格式保存string对象数据。可选的,所述结构体中变量包括data字段、size字段、capacity字段,其中,data字段为存储的string对象数据;size字段为string对象的大小;capacity字段为string对象的容量大小。可选的,上述过程中,编译器通常分配的空间比字符串的实际长度大,当向原始字符串中加入新的字符(不超过原来的capacity值),不用再次分配空间。S2、调用字符串分类函数,将S1中处理后的string对象数据按照字节大小分类,得到string对象各类别;S3、将步骤S2中得到的各类别进行对应内存处理。所述字符串分类函数,获取字符串大小,采用分层策略,将字符本文档来自技高网...

【技术保护点】
1.一种提高string字符串存储效率的方法,其特征在于:所述方法包括以下步骤:S1、定义结构体,用于保存并处理string对象的数据;S2、调用字符串分类函数,将S1中处理后的string对象数据按照字节大小分类,得到string对象各类别;S3、将步骤S2中得到的各类别进行对应内存处理。

【技术特征摘要】
1.一种提高string字符串存储效率的方法,其特征在于:所述方法包括以下步骤:S1、定义结构体,用于保存并处理string对象的数据;S2、调用字符串分类函数,将S1中处理后的string对象数据按照字节大小分类,得到string对象各类别;S3、将步骤S2中得到的各类别进行对应内存处理。2.根据权利要求1所述一种提高string字符串存储效率的方法,其特征在于:所述步骤S1中,所述结构体包括data字段、size字段、capacity字段,其中:data字段为string对象数据;size字段为string对象的大小;capacity字段为string对象的容量大小。3.根据权利要求1所述一种提高string字符串存储效率的方法,其特征在于:所述步骤S2中,所述string对象数据类别包括字节数小于第一预设数值、字节数为第二预设数值与第三预设数值之间以及字节数大于第三预设数值,其中,第一预设数值小于第二预设数值,第二预设数值小于第三预设数值,其中:S21、字节数小于第一预设数值时,string对象数据直接放置于string对象内部,将内存分配至栈上;S22、字节数为第二预设数值与第三预设数值之间时,申请新的内存,动态内存分配函数分配堆内存,根据S1中定义的结构体保存string对象数据;S23、字节数大于第三预设数值时,用引用计数,对string对象数据进行拷贝和处理。4.根据权利要求3所述一种提高string字符串存储效率的方法,其特征在于:所述步骤S23,包括以下步骤:S231、调用创建引用计数函数为每个string对象数据创建引用计数;S232、当string对象数据进行赋值操作时,调用增加引用计数函数将S231中创建的引用计数加1;S233、当不再使用string对象数据时,调用释放引用计数函数将引用计数减1;S234、当引用计数为0时,自动删除string对象的内存。5.一种提高string字符串存储效率的装置,其特征在于:所述装置包括:定义模块,用于定义结构体,用于保存并处理str...

【专利技术属性】
技术研发人员:黄浩张文明陈少杰
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

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

1