CN109885396A - 一种游戏应用中的字符串构建方法和装置 - Google Patents
一种游戏应用中的字符串构建方法和装置 Download PDFInfo
- Publication number
- CN109885396A CN109885396A CN201910033319.7A CN201910033319A CN109885396A CN 109885396 A CN109885396 A CN 109885396A CN 201910033319 A CN201910033319 A CN 201910033319A CN 109885396 A CN109885396 A CN 109885396A
- Authority
- CN
- China
- Prior art keywords
- target string
- internalization
- string
- game application
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种游戏应用中的字符串构建方法和装置。该方法包括:确定游戏应用中对目标字符串的操作数据;根据所述操作数据确定是否对所述目标字符串进行内部化操作;若是,则调用内部化函数对所述目标字符串进行所述内部化操作;若否,则将所述目标字符串添加到预设的字典中,以实例化所述目标字符串。本发明对游戏应用中的字符串构建方式进行改进,采用对游戏应用中需要进行内部化操作的目标字符串进行内部化操作,以减少内存中存在重复的目标字符串,减少游戏应用运行时内存的大小,进而保证游戏应用的游戏帧率正常,增加游戏品质。
Description
技术领域
本发明涉及一种游戏应用中的字符串构建方法和装置,属于游戏开发的技术领域。
背景技术
在手机游戏成为主流后,游戏的重度已经越来越重,运行时内存占用也越来越高,严重影响游戏帧率,甚至游戏品质。
在游戏应用的开发中,Unity是常用的开发游戏应用的游戏引擎,Mono模块主要用于将使用游戏引擎Unity开发游戏应用转换为适用于不同的操作系统,如Windows、Android和IOS等操作系统。需要注意的是,Mono模块作为整个游戏应用的一部分,Mono模块的运行时内存占用影响了整个游戏应用的运行时内存占用。但是,Mono模块中字符串在拼接的过程中存在大量重复的字符串,严重影响游戏应用运行时内存的大小和游戏帧率。
发明内容
本发明提供一种游戏应用中的字符串构建方法和装置,基于游戏应用中的字符串构建方式进行改进,采用对游戏应用中需要进行内部化操作的目标字符串进行内部化操作,以减少内存中存在重复的目标字符串,减少游戏应用运行时内存的大小,进而保证游戏应用的游戏帧率正常,增加游戏品质。
本发明的技术方案第一方面为一种游戏应用中的字符串构建方法,该方法包括以下步骤:S100)确定游戏应用中对目标字符串的操作数据;S200)根据所述操作数据确定是否对所述目标字符串进行内部化操作;S300)若是,则调用内部化函数对所述目标字符串进行所述内部化操作;S400)若否,则将所述目标字符串添加到预设的字典中,以实例化所述目标字符串。
进一步地,所述操作数据包括关于创建操作、拼接操作和销毁操作的频次数据。
进一步地,所述步骤S200还包括以下子步骤:S201)根据所述操作数据确定所述目标字符串对内存的占用情况;S202)根据所述占用情况符合预设内部化条件确定对所述目标字符串进行内部化操作。
又进一步地,所述占用情况为针对每个所述目标字符串在内存中的数量,所述预设内部化条件为所述数量超过预设阈值。
进一步地,所述步骤S300还包括以下子步骤:调用内部化函数将所述目标字符串添加到字符串池中,其中,所述字符串池中内容相同的字符串使用同一个内存地址。
进一步地,所述步骤S400还包括以下子步骤:S401)根据所述目标字符串的字符串名和字符串内容生成所述目标字符串的键值对;S402)将所述键值对添加到预设的字典中,所述字典在游戏应用进行内存回收操作时清除。
本发明的技术方案第二方面为一种计算机装置,包括存储器、处理器及储存在存储器上并能够在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
S100)确定游戏应用中对目标字符串的操作数据;
S200)根据所述操作数据确定是否对所述目标字符串进行内部化操作;
S300)若是,则调用内部化函数对所述目标字符串进行所述内部化操作;
S400)若否,则将所述目标字符串添加到预设的字典中,以实例化所述目标字符串。
本发明的技术方案第三方面为一种计算机可读存储介质,其上储存有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
S100)确定游戏应用中对目标字符串的操作数据;
S200)根据所述操作数据确定是否对所述目标字符串进行内部化操作;
S300)若是,则调用内部化函数对所述目标字符串进行所述内部化操作;
S400)若否,则将所述目标字符串添加到预设的字典中,以实例化所述目标字符串。
本发明的有益效果为:采用对游戏应用中需要进行内部化操作的目标字符串进行内部化操作,以减少内存中存在重复的目标字符串,减少游戏应用运行时内存的大小,进而保证游戏应用的游戏帧率正常,增加游戏品质。
附图说明
图1所示为本申请所公开的游戏应用中的字符串构建方法的流程图;
图2所示为在本申请的一个实施例中,内部化操作需求判断子方法的流程图;
图3所示为在本申请的另一个实施例中,实例化子方法的流程图。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。
需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本公开中所使用的上、下、左、右等描述仅仅是相对于附图中本公开各组成部分的相互位置关系来说的。在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。
参照图1所示的方法流程图,在本申请的一个或多个实施例中,根据本发明的方法可以用于对游戏应用的字符串进行构建。该方法包括以下步骤:S100)确定游戏应用中对目标字符串的操作数据;S200)根据所述操作数据确定是否对所述目标字符串进行内部化操作;S300)若是,则调用内部化函数对所述目标字符串进行所述内部化操作;S400)若否,则将所述目标字符串添加到预设的字典中,以实例化所述目标字符串。
具体地,以使用Unity游戏引擎开发游戏应用为例进行说明,引入Mono模块将使用游戏引擎Unity开发的游戏应用转换为适用于不同的操作系统,如Windows、Android和IOS等操作系统。由于Mono模块中字符串在拼接的过程中存在大量重复的字符串,严重影响游戏应用运行时内存的大小和游戏帧率。在本申请的一个或多个实施例中,采用将需要进行内部化操作的目标字符串进行内部化操作,以减少内存中存在重复的目标字符串的情况,从而减少游戏应用运行时内存的大小,进而保证游戏应用的游戏帧率正常,增加游戏品质。
进一步地,根据操作数据确定是否对所述目标字符串进行内部化操作。在本申请的一个或多个实施例中,所述操作数据包括关于创建操作、拼接操作和销毁操作等的频次数据。示例性的,在进行创建操作、拼接操作和销毁操作等操作之时,容易造成目标字符串在内存中重复实例化,也就是同一个字符串内容的目标字符串在内存中有至少两个字符串地址。示例性的,在不使用内部化操作的情况下,创建字符串a=“我们是”;b=“中国人”;c=“我们是中国人”,对字符串a和字符串b进行拼接操作(即a+b),得到的字符串(a+b)与字符串c存储在内存中的不同位置。而在使用内部化操作的情况下,字符串(a+b)与字符串c指向内存中的相同位置。所以可以根据所述操作数据确定是否对所述目标字符串进行内部化操作,进一步地,通过创建操作、拼接操作和销毁操作等的频次数据确定是否对所述目标字符串进行内部化操作,频次数据中操作的频次超过预设频率,则可以确定对所述目标字符串进行内部化操作,减少字符串对内存的占用。
又进一步地,对于不需要进行内部化操作的目标字符串,即不需要常驻内存的目标字符串,将其添加到预设的字典中,以实例化目标字符串,并在游戏应用进行内存回收时,将该字典清除。
对于上述对所述目标字符串进行内部化操作的判断操作,参照图2所示的子方法流程图,在本申请的一个或多个实施例中,步骤S300可以通过以下子步骤实现:S201)根据所述操作数据确定所述目标字符串对内存的占用情况;S202)根据所述占用情况符合预设内部化条件确定对所述目标字符串进行内部化操作。具体地,所述占用情况为针对每个所述目标字符串在内存中的数量,可以通过统计操作数据中各操作的频次数据确定。进一步地,所述预设内部化条件为所述数量超过预设阈值,则当占用情况符合预设内部化条件时,若不进行内部化操作,目标字符串在内存中的重复数量将超过预设阈值,内存占用将增加,为此,需要对该目标字符串进行内部化操作。
对于上述内部化操作的方式,在本申请的一个或多个实施例中,步骤S300可以通过以下子步骤实现:S301)调用内部化函数将所述目标字符串添加到字符串池中,其中,所述字符串池中内容相同的字符串使用同一个内存地址。具体地,可以调用内部化函数(如C#程序语言中的Intern函数)将目标字符串添加到后台维护的一个字符串池,从而保证让同样字符串内容的字符串始终复用同一个对象,即同样字符串内容的字符串在内存中具有同一个内存地址。通过将目标字符串进行内部化操作,至少有两个好处:一个是节省了内存(重复字符串越多,内存节省量越大);另一个是降低了字符串比较的开销(如果两个字符串内存地址引用一致,就不用逐字符比较内容了)。
对于上述不需要进行内部化操作的目标字符串的实例化方式,参照图3所示的子方法流程图,在本申请的一个或多个实施例中,步骤S400可以通过以下子步骤实现:S401)根据所述目标字符串的字符串名和字符串内容生成所述目标字符串的键值对;S402)将所述键值对添加到预设的字典中,所述字典在游戏应用进行内存回收操作时清除。其中,内存回收指的是垃圾回收(Garbage Collection,GC),GC是Java虚拟机垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制。在字典中的所有字符串不被引用时,该字典将被GC回收,减少游戏应用运行时内存的大小,以保证留有足够的内存空间运行游戏应用或其他应用,保证游戏应用运行时的流畅性,进而保证游戏应用的游戏帧率正常,增加游戏品质。
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。
Claims (8)
1.一种游戏应用中的字符串构建方法,其特征在于,包括以下步骤:
S100)确定游戏应用中对目标字符串的操作数据;
S200)根据所述操作数据确定是否对所述目标字符串进行内部化操作;
S300)若是,则调用内部化函数对所述目标字符串进行所述内部化操作;
S400)若否,则将所述目标字符串添加到预设的字典中,以实例化所述目标字符串。
2.根据权利要求1所述的方法,其特征在于,所述操作数据包括关于创建操作、拼接操作和销毁操作的频次数据。
3.根据权利要求1所述的方法,其特征在于,所述步骤S200还包括以下子步骤:
S201)根据所述操作数据确定所述目标字符串对内存的占用情况;
S202)根据所述占用情况符合预设内部化条件确定对所述目标字符串进行内部化操作。
4.根据权利要求3所述的方法,其特征在于,所述占用情况为针对每个所述目标字符串在内存中的数量,所述预设内部化条件为所述数量超过预设阈值。
5.根据权利要求1所述的方法,其特征在于,所述步骤S300还包括以下子步骤:
调用内部化函数将所述目标字符串添加到字符串池中,其中,所述字符串池中内容相同的字符串使用同一个内存地址。
6.根据权利要求1所述的方法,其特征在于,所述步骤S400还包括以下子步骤:
S401)根据所述目标字符串的字符串名和字符串内容生成所述目标字符串的键值对;
S402)将所述键值对添加到预设的字典中,所述字典在游戏应用进行内存回收操作时清除。
7.一种计算机装置,包括存储器、处理器及储存在存储器上并能够在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
S100)确定游戏应用中对目标字符串的操作数据;
S200)根据所述操作数据确定是否对所述目标字符串进行内部化操作;
S300)若是,则调用内部化函数对所述目标字符串进行所述内部化操作;
S400)若否,则将所述目标字符串添加到预设的字典中,以实例化所述目标字符串。
8.一种计算机可读存储介质,其上储存有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
S100)确定游戏应用中对目标字符串的操作数据;
S200)根据所述操作数据确定是否对所述目标字符串进行内部化操作;S300)若是,则调用内部化函数对所述目标字符串进行所述内部化操作;
S400)若否,则将所述目标字符串添加到预设的字典中,以实例化所述目标字符串。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910033319.7A CN109885396A (zh) | 2019-01-14 | 2019-01-14 | 一种游戏应用中的字符串构建方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910033319.7A CN109885396A (zh) | 2019-01-14 | 2019-01-14 | 一种游戏应用中的字符串构建方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109885396A true CN109885396A (zh) | 2019-06-14 |
Family
ID=66926005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910033319.7A Pending CN109885396A (zh) | 2019-01-14 | 2019-01-14 | 一种游戏应用中的字符串构建方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109885396A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111228815A (zh) * | 2020-01-17 | 2020-06-05 | 上海莉莉丝科技股份有限公司 | 处理游戏的配置表的方法、装置、存储介质和系统 |
CN112076463A (zh) * | 2020-09-04 | 2020-12-15 | 北京梦幻天下科技有限公司 | 一种手机游戏轻量化方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1866203A (zh) * | 2005-05-20 | 2006-11-22 | 腾讯科技(深圳)有限公司 | 一种字符串引用方法 |
CN102340580A (zh) * | 2010-07-16 | 2012-02-01 | 希姆通信息技术(上海)有限公司 | 手机及利用该手机实现的防止手机重复发送的方法 |
US9197710B1 (en) * | 2011-07-20 | 2015-11-24 | Google Inc. | Temporal based data string intern pools |
CN108363729A (zh) * | 2018-01-12 | 2018-08-03 | 中国平安人寿保险股份有限公司 | 一种字符串比较方法、装置、终端设备及存储介质 |
-
2019
- 2019-01-14 CN CN201910033319.7A patent/CN109885396A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1866203A (zh) * | 2005-05-20 | 2006-11-22 | 腾讯科技(深圳)有限公司 | 一种字符串引用方法 |
CN102340580A (zh) * | 2010-07-16 | 2012-02-01 | 希姆通信息技术(上海)有限公司 | 手机及利用该手机实现的防止手机重复发送的方法 |
US9197710B1 (en) * | 2011-07-20 | 2015-11-24 | Google Inc. | Temporal based data string intern pools |
CN108363729A (zh) * | 2018-01-12 | 2018-08-03 | 中国平安人寿保险股份有限公司 | 一种字符串比较方法、装置、终端设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
GU LU: "Unity游戏的String interning优化", 《HTTPS://INDIENOVA.COM/INDIE-GAME-DEVELOPMENT/UNITY-STRING-INTERNING/》 * |
GU LU: "Unity游戏的String interning优化", 《知乎》 * |
吴小含: "Unity游戏的String interning优化", 《"HTTPS://CLOUD.TENCENT.COM/DEVELOPER/ARTICLE/1005748》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111228815A (zh) * | 2020-01-17 | 2020-06-05 | 上海莉莉丝科技股份有限公司 | 处理游戏的配置表的方法、装置、存储介质和系统 |
CN111228815B (zh) * | 2020-01-17 | 2023-08-11 | 上海莉莉丝科技股份有限公司 | 处理游戏的配置表的方法、装置、存储介质和系统 |
CN112076463A (zh) * | 2020-09-04 | 2020-12-15 | 北京梦幻天下科技有限公司 | 一种手机游戏轻量化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11783227B2 (en) | Method, apparatus, device and readable medium for transfer learning in machine learning | |
CN105022630B (zh) | 一种组件管理系统及组件管理方法 | |
CN102696012B (zh) | 从代码使用中创建所推断的符号 | |
CN104407863B (zh) | 抽象控件模型编程装置和方法 | |
US8819621B2 (en) | System and method for automated re-architectureing of legacy systems using object oriented language | |
US20150371159A1 (en) | Generating Business Rule Model | |
CN109086215B (zh) | 一种嵌入式软件单元测试用例生成方法及系统 | |
CN109814884A (zh) | 一种根据游戏资源类型进行资源管理的方法及系统 | |
CN101253478A (zh) | 类型推理和类型导向的后期绑定 | |
CN108984160A (zh) | 基于组件化的信息化快速开发框架及方法 | |
CN113158189B (zh) | 一种恶意软件分析报告生成方法、装置、设备和介质 | |
CN112148278A (zh) | 可视化的区块链智能合约框架及智能合约开发部署方法 | |
CN109885396A (zh) | 一种游戏应用中的字符串构建方法和装置 | |
CN111338925A (zh) | 小程序测试方法及装置、系统、电子设备和存储介质 | |
US10387124B2 (en) | System and method for creating domain specific language | |
CN110162297A (zh) | 一种源代码段自然语言描述自动生成方法及系统 | |
CN110058861A (zh) | 源码处理方法及装置、存储介质、电子设备 | |
Chen et al. | AndroidOff: Offloading android application based on cost estimation | |
CN103853557A (zh) | 一种用Uboot网络启动WinCE的方法 | |
US11029934B2 (en) | Method and system for updating legacy software | |
CN112799658B (zh) | 模型训练方法、模型训练平台、电子设备和存储介质 | |
WO2021031137A1 (zh) | 人工智能应用开发系统、计算机设备及存储介质 | |
CN111241803A (zh) | 生成文本文件的方法、装置、计算机设备及可读存储介质 | |
CN102541544A (zh) | 树形控件的处理方法、装置及系统 | |
US10318937B2 (en) | Generating a product model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190614 |