CN109144599B - 函数加载方法及装置、计算机可读存储介质、终端 - Google Patents
函数加载方法及装置、计算机可读存储介质、终端 Download PDFInfo
- Publication number
- CN109144599B CN109144599B CN201710501825.5A CN201710501825A CN109144599B CN 109144599 B CN109144599 B CN 109144599B CN 201710501825 A CN201710501825 A CN 201710501825A CN 109144599 B CN109144599 B CN 109144599B
- Authority
- CN
- China
- Prior art keywords
- function
- loaded
- functions
- loading
- server
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种函数加载方法及装置、计算机可读存储介质、终端,所述方法包括以下步骤:对在浏览器中运行的代码进行监测;根据监测结果从服务器加载函数,每次加载的函数是所述代码所需的全部函数的一部分。本发明方案可以减少浏览器单次从服务器加载的函数数量,从而减少单次加载时间,尽量减少或避免浏览器崩溃的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其是一种函数加载方法及装置、计算机可读存储介质、终端。
背景技术
在现有技术中,在浏览器运行代码时,采用的方法为首先对所述代码所需的全部函数进行加载,进而逐个或逐批调用加载后的函数以运行该代码。
但是,现阶段许多大型程序包含的函数数量非常巨大,容易导致在浏览器运行时加载时间过长甚至崩溃的问题。例如当所述大型程序为一个大型游戏项目时,容易使移动设备浏览器在游戏过程中出现卡机或死机,降低用户体验。
发明内容
本发明解决的技术问题是提供一种函数加载方法,可以减少浏览器单次从服务器加载的函数数量,从而减少单次加载时间,尽量减少或避免浏览器崩溃的问题。
为解决上述技术问题,本发明实施例提供一种函数加载方法,包括以下步骤:对在浏览器中运行的代码进行监测;根据监测结果从服务器加载函数,每次加载的函数是所述代码所需的全部函数的一部分。
可选的,所述代码中设置有多个阶段切换点,所述根据监测结果从服务器加载函数包括:在检测到所述阶段切换点时,根据加载列表确定下一阶段的每个待加载函数是否已加载;加载未加载的待加载函数;其中,所述阶段切换点的位置由所述服务器配置,相邻阶段切换点之间的每个阶段具有一个或多个待加载函数。
可选的,所述加载列表是预先从所述服务器获取的。
可选的,在加载未加载的待加载函数之前,所述的函数加载方法还包括:对于已加载的函数,卸载所述下一阶段的待加载函数以外的函数。
可选的,所述根据监测结果从服务器加载函数包括:当监测结果表明所述函数被调用且未被加载时,从所述服务器加载所述函数。
可选的,所述从所述服务器加载所述函数之后,所述的函数加载方法包括:将所述函数追加到已加载函数队列的尾部;其中,所述已加载函数队列中按照加载先后顺序记录有已加载的函数。
可选的,从所述服务器加载所述函数之前,所述的函数加载方法还包括:确定所述已加载函数队列中包括的函数的数目;当所述函数的数目超出第一预设数目时,从所述已加载函数队列的头部依序移除已加载的函数,并且卸载被移除的函数,直至所述已加载函数队列中的函数数目少于等于所述第一预设数目。
可选的,所述的函数加载方法还包括:向所述服务器发送所述已加载函数队列。
可选的,所述的函数加载方法还包括:当所述监测结果表明所述函数被调用且已记录于所述已加载函数队列时,将所述函数调换至所述已加载函数队列的尾部。
可选的,从所述服务器加载所述函数之前,所述的函数加载方法还包括:确定已加载的函数的数目;当所述数目超出第二预设数目时,从所述已加载的函数中依序卸载最早加载的函数,直至已加载的函数的数目少于等于所述第二预设数目。
可选的,所述的函数加载方法还包括:向服务器发送卸载后的已加载的函数的列表。
为解决上述技术问题,本发明实施例提供一种函数加载装置,包括:监测模块,适于对在浏览器中运行的代码进行监测;加载模块,适于根据监测结果从服务器加载函数,每次加载的函数是所述代码所需的全部函数的一部分。
可选的,所述代码中设置有多个阶段切换点,所述加载模块包括:确定子模块,适于在检测到所述阶段切换点时,根据加载列表确定下一阶段的每个待加载函数是否已加载;第一加载子模块,适于加载未加载的待加载函数;其中,所述阶段切换点的位置由所述服务器配置,相邻阶段切换点之间的每个阶段具有一个或多个待加载函数。
可选的,所述加载列表是预先从所述服务器获取的。
可选的,所述的函数加载装置还包括:第一卸载模块,适于在加载未加载的待加载函数之前,对于已加载的函数,卸载所述下一阶段的待加载函数以外的函数。
可选的,所述加载模块包括:第二加载子模块,适于当监测结果表明所述函数被调用且未被加载时,从所述服务器加载所述函数。
可选的,所述的函数加载装置还包括:追加模块,适于从所述服务器加载所述函数之后,将所述函数追加到已加载函数队列的尾部;其中,所述已加载函数队列中按照加载先后顺序记录有已加载的函数。
可选的,所述的函数加载装置还包括:第一数目确定模块,适于从所述服务器加载所述函数之前,确定所述已加载函数队列中包括的函数的数目;第二卸载模块,适于当所述函数的数目超出第一预设数目时,从所述已加载函数队列的头部依序移除已加载的函数,并且卸载被移除的函数,直至所述已加载函数队列中的函数数目少于等于所述第一预设数目。
可选的,所述的函数加载装置还包括:第一发送模块,适于向所述服务器发送所述已加载函数队列。
可选的,所述的函数加载装置还包括:调换模块,适于当所述监测结果表明所述函数被调用且已记录于所述已加载函数队列时,将所述函数调换至所述已加载函数队列的尾部。
可选的,所述的函数加载装置还包括:第二数目确定模块,适于确定已加载的函数的数目;第三卸载模块,适于当所述数目超出第二预设数目时,从所述已加载的函数中依序卸载最早加载的函数,直至已加载的函数的数目少于等于所述第二预设数目。
可选的,所述的函数加载装置还包括:第二发送模块,适于向服务器发送卸载后的已加载的函数的列表。
为解决上述技术问题,本发明实施例提供一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述函数加载方法的步骤。
为解决上述技术问题,本发明实施例提供一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述函数加载方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
在本发明实施例中,对在浏览器中运行的代码进行监测;根据监测结果从服务器加载函数,每次加载的函数是所述代码所需的全部函数的一部分。采用上述方案,对于浏览器中运行代码所需的全部函数,可以每次加载其中的一部分,相比于现有技术中对全部函数进行加载,有助于减少单次加载函数的数量,从而减少单次加载时间,尽量减少或避免浏览器崩溃的问题。
进一步,在本发明实施例中,按照阶段切换点将函数划分为不同阶段,进而分阶段加载未加载的待加载函数,相比于现有技术中对全部函数进行加载,有助于减少单次加载函数的数量。
进一步,在本发明实施例中,在加载未加载的待加载函数之前,对于已加载的函数,卸载所述下一阶段的待加载函数以外的函数,从而有助于减少内存空间的存储压力。
进一步,在本发明实施例中,在函数被调用且未被加载时,从所述服务器加载所述函数,相比于现有技术中对该程序中所有的函数预先进行加载,通过在被调用时进行实时加载,有助于减少单次加载函数的数量。
进一步,通过从所述服务器加载所述函数之后,将所述函数追加到已加载函数队列的尾部,或者在函数被调用且已记录于所述已加载函数队列时,将所述函数调换至所述已加载函数队列的尾部,进而在已加载的函数的数目超出预设数目时,从所述已加载函数队列的头部依序移除已加载的函数,并且卸载被移除的函数,直至所述已加载函数队列中的函数数目少于等于所述第一预设数目。在本发明实施例中,可以在减少内存空间的存储压力的同时,减少对近期加载的函数进行卸载的可能性,避免影响程序运行以及重复加载。
附图说明
图1是本发明实施例中一种函数加载方法的流程图;
图2是图1中步骤S12的一种具体实施方式的流程图;
图3是本发明实施例中一种函数加载方法的数据流图;
图4是本发明实施例中另一种函数加载方法的流程图;
图5是本发明实施例中另一种函数加载方法的数据流图;
图6是本发明实施例中又一种函数加载方法的流程图;
图7是本发明实施例中又一种函数加载方法的数据流图;
图8是本发明实施例中一种函数加载装置的结构示意图;
图9是图8中加载模块802的一种具体实施方式的结构示意图。
具体实施方式
在现有技术中,在浏览器运行代码时,采用的方法为首先对所述代码所需的全部函数进行加载(load),进而逐个或逐批调用加载后的函数以运行该代码。但是,现阶段许多大型程序包含的函数数量非常巨大,容易导致在浏览器运行时加载时间过长甚至崩溃的问题。
本发明的发明人经过研究发现,在现有技术中,虽然浏览器对所需的全部函数进行了加载,但是在运行代码时,并非对全部函数一起调用,而是在需要时进行逐个或逐批调用。具体地,在运行代码期间真正需要的函数往往只是全部函数中的一个子集,而且在不同的运行阶段,所需要的函数集合也往往不同。因此,选择对全部函数进行加载或者选择每次加载其中的一部分,对于函数调用的影响有限。
在本发明实施例中,对在浏览器中运行的代码进行监测;根据监测结果从服务器加载函数,每次加载的函数是所述代码所需的全部函数的一部分。采用上述方案,对于浏览器中运行代码所需的全部函数,可以每次加载其中的一部分,相比于现有技术中对全部函数进行加载,有助于减少单次加载函数的数量,从而减少单次加载时间,尽量减少或避免浏览器崩溃的问题。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
参照图1,图1是本发明实施例中一种函数加载方法的流程图。所述函数加载方法可以包括步骤S11至步骤S12:
步骤S11:对在浏览器中运行的代码进行监测;
步骤S12:根据监测结果从服务器加载函数,每次加载的函数是所述代码所需的全部函数的一部分。
在步骤S11的具体实施中,可以通过即时编译器(Just-In-Time Compiler,JITCompiler)对在浏览器中运行的代码进行监测,还可以通过其他终端对在浏览器中运行的代码进行监测。
进一步地,可以设置所述JIT编译器运行在服务器端,还可以设置其他终端运行在服务器端或浏览器端。
其中,JIT编译器可以根据目标平台特性,将待转换代码转换成对于目标平台来说执行效率最高的代码形式。其中,目标平台特性例如可以包括浏览器的JavaScript语言版本,是否支持网页的汇编语言(Web Assembly)等。
在步骤S12的具体实施中,可以根据监测结果,多次从服务器加载函数至浏览器,每次加载的函数是所述代码所需的全部函数的一部分。
具体地,参照图2示出的图1中步骤S12的一种具体实施方式,根据监测结果从服务器加载函数的步骤可以包括步骤S21至步骤S22:
步骤S21:在检测到所述阶段切换点时,根据加载列表确定下一阶段的每个待加载函数是否已加载;
步骤S22:加载未加载的待加载函数。
在步骤S21的具体实施中,所述阶段切换点的位置可以是由人为指定的,还可以是所述服务器通过测试运行实际代码,经过统计分析后进行配置的。具体地,根据阶段切换点将完整的代码划分为多个阶段,相邻阶段切换点之间的每个阶段具有一个或多个待加载函数。
所述加载列表可以是预先从所述服务器获取的。具体地,可以根据加载列表获得每一阶段具有的一个或多个待加载函数的集合,从而在检测到阶段切换点时,确定下一阶段具有哪些待加载函数,以及每个待加载函数是否已加载。
在步骤S22的具体实施中,对未加载的待加载函数进行加载。
例如在阶段切换点前已加载的函数的集合为A,在阶段切换点的下一阶段待加载函数的集合为B,则可以对属于B但不属于A的函数进行加载。
在本发明实施例中,按照阶段切换点将函数划分为不同阶段,进而分阶段加载未加载的待加载函数,相比于现有技术中对全部函数进行加载,有助于减少单次加载函数的数量。
进一步地,在加载未加载的待加载函数之前,对于已加载的函数,卸载(unload)所述下一阶段的待加载函数以外的函数。
例如在阶段切换点前已加载的函数的集合为A,在阶段切换点的下一阶段待加载函数的集合为B,则可以对属于A但不属于B的函数进行卸载。
在本发明实施例中,在加载未加载的待加载函数之前,对于已加载的函数,卸载所述下一阶段的待加载函数以外的函数,有助于减少内存空间的存储压力。
图3是本发明实施例中一种函数加载方法的数据流图。所述函数加载方法可以包括步骤S31至步骤S35:
步骤S31:终端32从服务器31获取加载列表;
步骤S32:终端32对在浏览器中运行的代码进行监测;
步骤S33:在检测到所述阶段切换点时,终端32根据加载列表确定下一阶段的每个待加载函数是否已加载;
步骤S34:终端32卸载所述下一阶段的待加载函数以外的函数;
步骤S35:终端32从服务器31加载未加载的待加载函数。
关于图3示出的一种函数加载方法的更多详细内容请参照前文及图1至图2示出的关于一种函数加载方法的相关描述,此处不再赘述。
继续参照图1,在步骤S12的另一种具体实施方式中,可以当监测结果表明所述函数被调用且未被加载时,从所述服务器加载所述函数。可以理解的是,被调用且未被加载的函数是所述代码所需的全部函数的一部分。
在本发明实施例中,对于浏览器中运行代码所需的全部函数,可以每次加载其中的一部分,相比于现有技术中对全部函数进行加载,有助于减少单次加载函数的数量,从而减少单次加载时间,尽量减少或避免浏览器崩溃的问题。
图4是本发明实施例中另一种函数加载方法的流程图,所述另一种函数加载方法可以包括步骤S41至步骤S48,以下对各个步骤进行详细说明。
在步骤S41中,对在浏览器中运行的代码进行监测。
在步骤S42中,确定监测结果表明函数被调用且未被加载。
具体地,确定监测结果表明函数被调用且未被加载,需要在后续操作中对该函数进行加载;确定监测结果表明函数未被调用或已加载,则无需对该函数进行加载。
在步骤S43中,确定所述已加载函数队列中包括的函数的数目。
在步骤S44中,当所述函数的数目超出第一预设数目时,从所述已加载函数队列的头部依序移除已加载的函数,并且卸载被移除的函数,直至所述已加载函数队列中的函数数目少于等于所述第一预设数目。
具体地,所述已加载函数队列中按照加载先后顺序记录有已加载的函数,通过确定所述已加载函数队列中包括的函数的数目,并且在所述函数的数目超出第一预设数目时,从所述已加载函数队列的头部依序移除已加载的函数,并且卸载被移除的函数,直至所述已加载函数队列中的函数数目少于等于所述第一预设数目。可以减少内存空间的存储压力。
其中,从所述已加载函数队列的头部依序移除已加载的函数,并且卸载被移除的函数,有助于确保卸载的是最早加载的函数,从而减少对近期加载的函数进行卸载的可能性,避免由于卸载了当前需要的函数而影响程序运行以及重复加载。
所述第一预设数目可以根据具体的内存空间的大小设置,在本发明实施例中,对于第一预设数目的具体数值不作限制。
在步骤S45中,从所述服务器加载所述函数。
在步骤S46中,将所述函数追加到已加载函数队列的尾部。
具体地,所述已加载函数队列中按照加载先后顺序记录有已加载的函数,将新加载的函数追加到已加载函数队列的尾部,可以对已加载函数队列的信息进行更新,有助于保持已加载函数队列的准确性。
在步骤S47中,当所述监测结果表明所述函数被调用且已记录于所述已加载函数队列时,将所述函数调换至所述已加载函数队列的尾部。
具体地,当所述监测结果表明所述函数被调用且已记录于所述已加载函数队列时,保持所述函数的加载状态不变,并且将所述函数调换至所述已加载函数队列的尾部。相比于从所述已加载函数队列中移除所述函数、卸载所述函数、重新加载所述函数并且将所述函数追加到已加载函数队列的尾部的步骤,采用本发明实施例的方案,有助于减少信息消耗,提高效率。
在步骤S48中,向所述服务器发送所述已加载函数队列。
具体地,通过向服务器发送所述已加载函数队列,服务器可以将已加载函数队列和/或被调用的函数记录在案,有助于提高对其他终端配置待加载函数的完善性。例如在函数加载的最开始阶段,又或者在每个阶段切换点,通过加载列表使其他终端加载该函数,从而降低其他终端单独加载此函数的可能性,有助于提高运行效率。
在本发明实施例中,在函数被调用且未被加载时,从所述服务器加载所述函数,相比于现有技术中对该程序中所有的函数预先进行加载,通过在被调用时进行实时加载,有助于减少单次加载函数的数量。
图5是本发明实施例中另一种函数加载方法的数据流图。所述另一种函数加载方法可以包括步骤S51至步骤S58:
步骤S51:终端52对在浏览器中运行的代码进行监测;
步骤S52:终端52确定监测结果表明函数被调用且未被加载;
步骤S53:终端52确定所述已加载函数队列中包括的函数的数目;
步骤S54:当所述函数的数目超出第一预设数目时,终端52从所述已加载函数队列的头部依序移除已加载的函数,并且卸载被移除的函数,直至所述已加载函数队列中的函数数目少于等于所述第一预设数目;
步骤S55:终端52从服务器51加载所述函数;
步骤S56:终端52将所述函数追加到已加载函数队列的尾部;
步骤S57:当所述监测结果表明所述函数被调用且已记录于所述已加载函数队列时,终端52将所述函数调换至所述已加载函数队列的尾部;
步骤S58:终端52向服务器51发送所述已加载函数队列。
关于图4至图5示出的另一种函数加载方法的更多详细内容请参照前文及图1至图3示出的关于一种函数加载方法的相关描述,此处不再赘述。
参照图6,图6是本发明实施例中又一种函数加载方法的流程图,所述又一种函数加载方法可以包括步骤S61至步骤S66,以下对各个步骤进行详细说明。
在步骤S61中,对在浏览器中运行的代码进行监测。
在步骤S62中,确定监测结果表明所述函数被调用且未被加载。
在步骤S63中,确定已加载的函数的数目。
在步骤S64中,当所述数目超出第二预设数目时,从所述已加载的函数中依序卸载最早加载的函数,直至已加载的函数的数目少于等于所述第二预设数目。
具体地,从所述已加载的函数中依序卸载最早加载的函数,直至已加载的函数的数目少于等于所述第二预设数目,可以减少内存空间的存储压力。
其中,从所述已加载的函数中依序卸载最早加载的函数,有助于确保卸载的是最早加载的函数,从而减少对近期加载的函数进行卸载的可能性,避免由于卸载了当前需要的函数而影响程序运行以及重复加载。
所述第二预设数目可以根据具体的内存空间的大小设置,在本发明实施例中,对于第二预设数目的具体数值不作限制。
在步骤S65中,从所述服务器加载所述函数。
在步骤S66中,向服务器发送卸载后的已加载的函数的列表。
具体地,通过向服务器发送卸载后的已加载的函数的列表,服务器可以将已加载的函数和/或被调用的函数记录在案,有助于提高对其他终端配置待加载函数的完善性。例如在函数加载的最开始阶段,又或者在每个阶段切换点,通过加载列表使其他终端加载该函数,从而降低其他终端单独加载此函数的可能性,有助于提高运行效率。
图7是本发明实施例中又一种函数加载方法的数据流图,所述又一种函数加载方法可以包括步骤S71至步骤S76:
步骤S71:终端72对在浏览器中运行的代码进行监测。
步骤S72:终端72确定监测结果表明所述函数被调用且未被加载。
步骤S73:终端72确定已加载的函数的数目。
步骤S74:当所述数目超出第二预设数目时,终端72从所述已加载的函数中依序卸载最早加载的函数,直至已加载的函数的数目少于等于所述第二预设数目。
步骤S75:终端72从服务器71加载所述函数。
步骤S76:终端72向服务器71发送卸载后的已加载的函数的列表。
关于图6至图7示出的又一种函数加载方法的更多详细内容请参照前文及图1至图5示出的关于函数加载方法的相关描述,此处不再赘述。
参照图8,图8是本发明实施例中一种函数加载装置的结构示意图。所述函数加载装置可以包括监测模块801、加载模块802、第一卸载模块803、追加模块804、第一数目确定模块805、第二卸载模块806、第一发送模块807、调换模块808、第二数目确定模块809、第三卸载模块810以及第二发送模块811。
其中,所述监测模块801,适于对在浏览器中运行的代码进行监测。
所述加载模块802,适于根据监测结果从服务器加载函数,每次加载的函数是所述代码所需的全部函数的一部分。
所述第一卸载模块803,适于在加载未加载的待加载函数之前,对于已加载的函数,卸载所述下一阶段的待加载函数以外的函数。
所述追加模块804,适于从所述服务器加载所述函数之后,将所述函数追加到已加载函数队列的尾部;其中,所述已加载函数队列中按照加载先后顺序记录有已加载的函数。
所述第一数目确定模块805,适于从所述服务器加载所述函数之前,确定所述已加载函数队列中包括的函数的数目;
所述第二卸载模块806,适于当所述函数的数目超出第一预设数目时,从所述已加载函数队列的头部依序移除已加载的函数,并且卸载被移除的函数,直至所述已加载函数队列中的函数数目少于等于所述第一预设数目。
所述第一发送模块807,适于向所述服务器发送所述已加载函数队列。
所述调换模块808,适于当所述监测结果表明所述函数被调用且已记录于所述已加载函数队列时,将所述函数调换至所述已加载函数队列的尾部。
所述第二数目确定模块809,适于确定已加载的函数的数目。
所述第三卸载模块810,适于当所述数目超出第二预设数目时,从所述已加载的函数中依序卸载最早加载的函数,直至已加载的函数的数目少于等于所述第二预设数目。
所述第二发送模块811,适于向服务器发送卸载后的已加载的函数的列表。
进一步地,所述加载模块802的一种具体实施方式的结构示意图可以参照图9,所述加载模块802可以包括确定子模块901、第一加载子模块902以及第二加载子模块903。
其中,所述确定子模块901,适于在检测到所述阶段切换点时,根据加载列表确定下一阶段的每个待加载函数是否已加载。
所述第一加载子模块902,适于加载未加载的待加载函数;其中,所述阶段切换点的位置由所述服务器配置,相邻阶段切换点之间的每个阶段具有一个或多个待加载函数。
所述第二加载子模块903,适于当监测结果表明所述函数被调用且未被加载时,从所述服务器加载所述函数。
关于该函数加载装置的更多详细内容请参照前文及图1至图7示出的关于函数加载方法的相关描述,此处不再赘述。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述函数加载方法的步骤。所述计算机可读存储介质可以是光盘、机械硬盘、固态硬盘等。
本发明实施例还提供了一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述函数加载方法的步骤。
其中,所述终端可以运行在服务器端或浏览器端。
需要说明的是,本申请实施例的方案可以用于浏览器从服务器中加载各种代码中的函数,尤其适用于浏览器从服务器中加载游戏代码中的函数。另外需要说明的是,本文中的加载可以指的是将被加载的内容写入终端的主存储器(例如内存),卸载可以指的是将终端的主存储器中的内容擦除。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (22)
1.一种函数加载方法,其特征在于,包括以下步骤:
对在浏览器中运行的代码进行监测;
根据监测结果从服务器加载函数,每次加载的函数是所述代码所需的全部函数的一部分;
所述函数加载方法还包括:
当所述监测结果表明所述函数被调用且已记录于已加载函数队列时,将所述函数调换至所述已加载函数队列的尾部;
其中,所述已加载函数队列中按照加载先后顺序记录有已加载的函数。
2.根据权利要求1所述的函数加载方法,其特征在于,所述代码中设置有多个阶段切换点,所述根据监测结果从服务器加载函数包括:
在检测到所述阶段切换点时,根据加载列表确定下一阶段的每个待加载函数是否已加载;
加载未加载的待加载函数;
其中,所述阶段切换点的位置由所述服务器配置,相邻阶段切换点之间的每个阶段具有一个或多个待加载函数。
3.根据权利要求2所述的函数加载方法,其特征在于,所述加载列表是预先从所述服务器获取的。
4.根据权利要求2所述的函数加载方法,其特征在于,在加载未加载的待加载函数之前,还包括:
对于已加载的函数,卸载所述下一阶段的待加载函数以外的函数。
5.根据权利要求1所述的函数加载方法,其特征在于,所述根据监测结果从服务器加载函数包括:
当监测结果表明所述函数被调用且未被加载时,从所述服务器加载所述函数。
6.根据权利要求5所述的函数加载方法,其特征在于,所述从所述服务器加载所述函数之后包括:
将所述函数追加到已加载函数队列的尾部。
7.根据权利要求6所述的函数加载方法,其特征在于,从所述服务器加载所述函数之前,还包括:
确定所述已加载函数队列中包括的函数的数目;
当所述函数的数目超出第一预设数目时,从所述已加载函数队列的头部依序移除已加载的函数,并且卸载被移除的函数,直至所述已加载函数队列中的函数数目少于等于所述第一预设数目。
8.根据权利要求7所述的函数加载方法,其特征在于,还包括:
向所述服务器发送所述已加载函数队列。
9.根据权利要求5所述的函数加载方法,其特征在于,从所述服务器加载所述函数之前,还包括:
确定已加载的函数的数目;
当所述数目超出第二预设数目时,从所述已加载的函数中依序卸载最早加载的函数,直至已加载的函数的数目少于等于所述第二预设数目。
10.根据权利要求9所述的函数加载方法,其特征在于,还包括:向服务器发送卸载后的已加载的函数的列表。
11.一种函数加载装置,其特征在于,包括:
监测模块,适于对在浏览器中运行的代码进行监测;
加载模块,适于根据监测结果从服务器加载函数,每次加载的函数是所述代码所需的全部函数的一部分;
所述函数加载装置还包括:
调换模块,适于当所述监测结果表明所述函数被调用且已记录于已加载函数队列时,将所述函数调换至所述已加载函数队列的尾部;
其中,所述已加载函数队列中按照加载先后顺序记录有已加载的函数。
12.根据权利要求11所述的函数加载装置,其特征在于,所述代码中设置有多个阶段切换点,所述加载模块包括:
确定子模块,适于在检测到所述阶段切换点时,根据加载列表确定下一阶段的每个待加载函数是否已加载;
第一加载子模块,适于加载未加载的待加载函数;
其中,所述阶段切换点的位置由所述服务器配置,相邻阶段切换点之间的每个阶段具有一个或多个待加载函数。
13.根据权利要求12所述的函数加载装置,其特征在于,所述加载列表是预先从所述服务器获取的。
14.根据权利要求12所述的函数加载装置,其特征在于,还包括:
第一卸载模块,适于在加载未加载的待加载函数之前,对于已加载的函数,卸载所述下一阶段的待加载函数以外的函数。
15.根据权利要求11所述的函数加载装置,其特征在于,所述加载模块包括:第二加载子模块,适于当监测结果表明所述函数被调用且未被加载时,从所述服务器加载所述函数。
16.根据权利要求15所述的函数加载装置,其特征在于,还包括:
追加模块,适于从所述服务器加载所述函数之后,将所述函数追加到已加载函数队列的尾部。
17.根据权利要求16所述的函数加载装置,其特征在于,还包括:
第一数目确定模块,适于从所述服务器加载所述函数之前,确定所述已加载函数队列中包括的函数的数目;
第二卸载模块,适于当所述函数的数目超出第一预设数目时,从所述已加载函数队列的头部依序移除已加载的函数,并且卸载被移除的函数,直至所述已加载函数队列中的函数数目少于等于所述第一预设数目。
18.根据权利要求17所述的函数加载装置,其特征在于,还包括:
第一发送模块,适于向所述服务器发送所述已加载函数队列。
19.根据权利要求15所述的函数加载装置,其特征在于,还包括:
第二数目确定模块,适于确定已加载的函数的数目;
第三卸载模块,适于当所述数目超出第二预设数目时,从所述已加载的函数中依序卸载最早加载的函数,直至已加载的函数的数目少于等于所述第二预设数目。
20.根据权利要求19所述的函数加载装置,其特征在于,还包括:
第二发送模块,适于向服务器发送卸载后的已加载的函数的列表。
21.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运行时执行权利要求1至10任一项所述函数加载方法的步骤。
22.一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求1至10任一项所述函数加载方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710501825.5A CN109144599B (zh) | 2017-06-27 | 2017-06-27 | 函数加载方法及装置、计算机可读存储介质、终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710501825.5A CN109144599B (zh) | 2017-06-27 | 2017-06-27 | 函数加载方法及装置、计算机可读存储介质、终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109144599A CN109144599A (zh) | 2019-01-04 |
CN109144599B true CN109144599B (zh) | 2021-09-24 |
Family
ID=64805096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710501825.5A Expired - Fee Related CN109144599B (zh) | 2017-06-27 | 2017-06-27 | 函数加载方法及装置、计算机可读存储介质、终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109144599B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101529415A (zh) * | 2006-10-30 | 2009-09-09 | 微软公司 | 基于web的应用程序的离线执行 |
CN102200920A (zh) * | 2010-03-23 | 2011-09-28 | 三星电子株式会社 | 程序编译器、程序安装器和程序安装方法 |
CN102591954A (zh) * | 2011-12-29 | 2012-07-18 | 深圳Tcl新技术有限公司 | 一种浏览器用数据加载方法、装置及终端 |
CN103500199A (zh) * | 2013-09-24 | 2014-01-08 | 北京大学 | 一种基于云端模板预先加载的网页渲染加速方法和*** |
CN103699535A (zh) * | 2012-09-27 | 2014-04-02 | 联想(北京)有限公司 | 网页加载方法及终端设备 |
CN104239352A (zh) * | 2013-06-20 | 2014-12-24 | 国际商业机器公司 | 一种用于加载网页的方法和*** |
CN105045645A (zh) * | 2015-09-22 | 2015-11-11 | 广州神马移动信息科技有限公司 | 网页加载方法、装置及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050040432A (ko) * | 2003-10-28 | 2005-05-03 | 주식회사 팬택앤큐리텔 | 메뉴 화면 갱신 기능을 가진 이동통신 단말기 및 그 갱신방법 |
-
2017
- 2017-06-27 CN CN201710501825.5A patent/CN109144599B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101529415A (zh) * | 2006-10-30 | 2009-09-09 | 微软公司 | 基于web的应用程序的离线执行 |
CN102200920A (zh) * | 2010-03-23 | 2011-09-28 | 三星电子株式会社 | 程序编译器、程序安装器和程序安装方法 |
CN102591954A (zh) * | 2011-12-29 | 2012-07-18 | 深圳Tcl新技术有限公司 | 一种浏览器用数据加载方法、装置及终端 |
CN103699535A (zh) * | 2012-09-27 | 2014-04-02 | 联想(北京)有限公司 | 网页加载方法及终端设备 |
CN104239352A (zh) * | 2013-06-20 | 2014-12-24 | 国际商业机器公司 | 一种用于加载网页的方法和*** |
CN103500199A (zh) * | 2013-09-24 | 2014-01-08 | 北京大学 | 一种基于云端模板预先加载的网页渲染加速方法和*** |
CN105045645A (zh) * | 2015-09-22 | 2015-11-11 | 广州神马移动信息科技有限公司 | 网页加载方法、装置及*** |
Also Published As
Publication number | Publication date |
---|---|
CN109144599A (zh) | 2019-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107450971B (zh) | 任务处理方法及装置 | |
JP5211751B2 (ja) | 計算機、ダンププログラムおよびダンプ方法 | |
US9465675B2 (en) | Communication control device, information processing apparatus, parallel computer system, and control method for parallel computer system | |
CN113990354B (zh) | 基于Linux的音频控制方法、装置、设备和存储介质 | |
US11068379B2 (en) | Software quality determination apparatus, software quality determination method, and software quality determination program | |
CN108717374B (zh) | Java虚拟机启动时预热的方法、装置、及计算机设备 | |
CN103677870A (zh) | ***升级方法及采用该方法升级的*** | |
CN105573788B (zh) | 补丁处理的方法和设备以及生成补丁的方法和设备 | |
CN112182010A (zh) | 脏页刷新方法和装置、存储介质和电子设备 | |
US20180293072A1 (en) | Method and apparatus for detecting nop sled | |
US10834012B2 (en) | Device and method supporting virtual resource combination decisions | |
CN109144599B (zh) | 函数加载方法及装置、计算机可读存储介质、终端 | |
CN106874020B (zh) | 启动插件的方法及装置 | |
US20210208945A1 (en) | Information processing apparatus, information processing method, and computer readable medium | |
US20170109258A1 (en) | Smart logging of trace data for storage systems | |
US11354201B2 (en) | Effective selection of a virtual machine to be moved outside influence range of a failure | |
CN103425539B (zh) | 信息处理方法及装置 | |
JP5709903B2 (ja) | データレコードを圧縮し圧縮されたデータレコードを処理するための方法、システム、コンピュータプログラム、その記録媒体、データコレクションを記憶したデータ記憶媒体、並びに通話データ記録システム | |
CN112436973A (zh) | 一种用于云游戏的服务体验指标自动化测试方法与设备 | |
CN107291483B (zh) | 智能删除应用程序的方法及电子设备 | |
US20180373512A1 (en) | Method and device for simulating synchronous blocking in asynchronous environment, storage medium, server and terminal | |
KR102635546B1 (ko) | 기계 학습을 통한 심볼릭 실행의 탐색 공간 자동 축소 방법 | |
CN112925474B (zh) | 一种终端设备的控制方法、存储介质及终端设备 | |
CN110795334B (zh) | 一种测试装置和方法 | |
US7571436B2 (en) | Device for increasing the execution speed of a linked program |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210924 |