CN110147258B - 提高程序加载效率的方法、装置、计算机设备和存储介质 - Google Patents
提高程序加载效率的方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110147258B CN110147258B CN201910319067.4A CN201910319067A CN110147258B CN 110147258 B CN110147258 B CN 110147258B CN 201910319067 A CN201910319067 A CN 201910319067A CN 110147258 B CN110147258 B CN 110147258B
- Authority
- CN
- China
- Prior art keywords
- program
- cache space
- data block
- stored
- data blocks
- 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.)
- Active
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明揭示了一种提高程序加载效率的方法、装置、计算机设备和存储介质,其中方法包括:当第一程序被调用时,检测第一程序是否存放在缓存空间;若否,则检测是否存在与第一程序关联的第一数据块,第一数据块记录第一程序的调用计数、程序名称和调用时间;若否,则生成与第一程序关联的第一数据块;获取存放在缓存空间中的所有第二程序关联的第二数据块,按照预设排序规则将第一数据块和第二数据块进行第一优先级排序;按照第一优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,以确定第一程序是否可以预先存放到缓存空间。本发明提高程序加载效率,提高函数计算平台性能。
Description
技术领域
本发明涉及到计算机程序领域,特别是涉及到一种提高程序加载效率的方法、装置、计算机设备和存储介质。
背景技术
用户将程序保存在函数计算平台上,当需要程序执行时,通过发送对应的请求即可调用程序,函数计算平台为用户提供运行程序所需要的主机服务器资源,一般实现的基本过程是,检测调用程序是否存放在缓存空间,如果在缓存空间,则直接从缓存中调用,如果不在缓存空间,则到数据库中调用程序,然后将程序实时的注入到Docker(Docker是一个开源的应用容器引擎)中,执行程序代码,将执行的结果返回给用户,同时将程序存放到缓存空间用于下次的程序调用,但是这种单一的处理方式会导致程序加载效率比较慢,函数计算平台的性能低下。
发明内容
本发明的主要目的为提供一种提高程序加载效率的方法、装置、计算机设备和存储介质,提高程序加载效率,提高函数计算平台性能。
为了实现上述发明目的,本发明提出一种提高程序加载效率的方法,包括:
当第一程序被调用时,检测第一程序是否存放在缓存空间;
若不在缓存空间,则检测是否存在与第一程序关联的第一数据块,第一数据块记录第一程序的调用计数、程序名称和调用时间;
若不存在第一数据块,则生成与第一程序关联的第一数据块;
获取存放在缓存空间中的所有第二程序关联的第二数据块,按照预设排序规则将第一数据块和第二数据块进行第一优先级排序;
按照第一优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,以确定第一程序是否可以预先存放到缓存空间。
进一步地,生成与第一程序关联的第一数据块的步骤中,包括:
判断第一程序是否满足预设条件;
若满足预设条件,则获取第一程序的调用计数、程序名称和调用时间,以生成与第一程序关联的第一数据块,其中调用计数默认为一。
进一步地,判断第一程序是否满足预设条件的步骤中,包括:
判断第一程序的文件大小是否小于预设阈值;
若小于预设阈值,则判断第一程序是否被用户标记为重要;
若标记为重要,则判定第一程序满足预设条件。
进一步地,按照预设排序规则将第一数据块和第二数据块进行第一优先级排序的步骤中,包括:
根据调用计数从大到小将数据块依次排序,其中若有调用计数相同的数据块,则根据调用时间按时间降序排序。
进一步地,检测是否存在与第一程序关联的第一数据块的步骤之后,还包括:
若存在第一数据块,则将第一数据块中的调用计数加一,并且更新调用时间;
获取第二数据块,重新根据预设规则将第一数据块和第二数据块进行第二优先级排序;
按照第二优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,判断第一程序是否可以替换第二程序。
进一步地,获取存放在缓存空间中的所有第二程序关联的第二数据块的步骤之前,还包括:
判断缓存空间是否足够存放第一程序;
若足够存放,则将第一程序存放到缓存空间;
若不足够存放,则获取存放在缓存空间中的所有第二程序关联的第二数据块。
进一步地,当第一程序被调用时,检测第一程序是否存放在缓存空间的步骤之后,还包括:
若在缓存空间,则将第一数据块中的调用计数加一,并且更新调用时间。
本发明还提出一种提高程序加载效率的装置,包括:
第一检测模块,用于当第一程序被调用时,检测第一程序是否存放在缓存空间;
第二检测模块,用于若第一检测模块的检测结果为否,则检测是否存在与第一程序关联的第一数据块,第一数据块记录第一程序的调用计数、程序名称和调用时间调用计数;
生成模块,用于若第二检测模块的检测结果为否,则生成与第一程序关联的第一数据块;
第一排序模块,用于获取存放在缓存空间中的所有第二程序关联的第二数据块,按照预设排序规则将第一数据块和第二数据块进行第一优先级排序;
存放模块,用于按照第一优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,以确定第一程序是否可以预先存放到缓存空间。
本发明还提出一种计算机设备,包括存储器和处理器,存储器存储有计算机可读指令,处理器执行计算机可读指令时实现上述任一项方法的步骤。
本发明还提供一种计算机非易失性可读存储介质,其上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现上述任一项方法的步骤。
本发明提高程序加载效率的方法、装置、计算机设备和存储介质的有益效果为:通过与程序关联的数据块,并对数据块进行优先级排序,根据优先级排序情况将优先级相对高的数据块对应的程序预先存放到缓存空间,当函数计算平台调用优先级高、频繁调用的程序时,可以直接从缓存中调用,省去在数据库查找程序的时间,同时避免优先级很低、调用不频繁的程序也要进行存放到缓存空间、或可能替换缓存空间中的程序的操作,提高程序加载的效率,提高函数计算平台的性能。
附图说明
图1为本发明提高程序加载效率的方法的步骤示意图;
图2为本发明提高程序加载效率的装置的流程示意图;
图3为本发明计算机设备一实施例的结构示意框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,一种提高程序加载效率的方法,包括:
S1、当第一程序被调用时,检测第一程序是否存放在缓存空间;
S2、若不在缓存空间,则检测是否存在与第一程序关联的第一数据块,第一数据块记录第一程序的调用计数、程序名称和调用时间;
S3、若不存在第一数据块,则生成与第一程序关联的第一数据块;
S4、获取存放在缓存空间中的所有第二程序关联的第二数据块,按照预设排序规则将第一数据块和第二数据块进行第一优先级排序;
S5、按照第一优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,以确定第一程序是否可以预先存放到缓存空间。
在上述步骤S1中,函数计算平台在调用程序的时候,都是先检测调用的程序是否存放在缓存空间中,如果程序已存放在缓存空间,则可以直接从缓存空间中调用,提高程序加载效率。
在上述步骤S2中,若缓存空间中没有存放被调用的程序,则可以考虑被调用的程序是第一次调用还是之前有调用过但是没有达到存放在缓存空间的条件,所以检测是否存在与被调用程序关联的数据块来判断是上述的哪种情况,而与程序关联的数据块是用来记录程序被函数计算平台调用频率的数据结构。如数据块可以通过语句{count:5,function:aaa,timestamp:20181029120159}来表示,其中,count表示调用计数、function表示程序名称,timestamp表示调用时间,上面的数据块记录的意思是程序名称为“aaa”的程序被调用了5次,最近一次调用时间是2018年10月29日12点1分59秒。
在上述步骤S3中,若被调用的程序没有关联的数据块,则可以确定该被调用的程序是第一次调用,则生成与该程序关联的数据块,后续可以判断该程序是否可以存放到缓存空间。
在上述步骤S4中,要判断被调用的程序是否可以存放在缓存空间,只需要和已存放到缓存空间中的所有程序进行比较即可,因此获取缓存空间中所有程序关联的数据块,由于数据块是与程序关联的,按照预定规则将被调用程序关联的数据块和在缓存空间中的程序关联的据块进行优先级排序,目的也是对被调用的程序和在缓存空间中的所有程序进行优先级排序,数据块优先级排序顺序即对应程序的优先级排序顺序,排在前面的程序相对于排在后面的程序来说优先级是比较高的,即比较重要的或是调用频繁的。
在上述步骤S5中,如排在前面的程序优先级相对比较高、调用相对比较频繁,程序过去被调用多次,那么将来被调用的频率也更好,因此根据数据块优先级排序顺序,依次将排在前面的数据块对应的程序预先存放到缓存空间,具体将排在前面的多少个程序加载到缓存空间中,这要看具体的缓存空间是多少来决定,其中存放到缓存空间的程序不会溢出缓存,如缓存空间在存放到100个程序后,缓存空间满了,那么就是将优先级排序一至一百的数据块对应的程序预先存放到缓存空间,前一百个数据块对应程序相对于排在后面的程序来说都是优先级高的,调用频繁的,有较大的可能会经常使用到,如果被调用的程序关联的数据块刚好排在一百以内,则被调用的程序可以存放到缓存空间,函数计算平台下次在调用程序的时候,对于调用已经在缓存空间中的程序,即优先级高的程序,可以直接在缓存空间中调用,而无需要再从数据库查询调用程序,减少函数计算平台调用程序的步骤,能节约调用时间,同时避免优先级很低、相对不重要的程序也要进行存放到缓存空间、或可能替换缓存空间中的程序的操作,提高程序加载的效率,提高函数计算平台的性能。
进一步地,在步骤S1之后,还包括:
S11、若在缓存空间,则将第一数据块中的调用计数加一,并且更新调用时间。
在上述步骤S11中,若被调用的程序在缓存空间,则函数计算平台可以直接在缓存空间调用程序,同时由于被调用的程序在缓存空间,则可以说明该程序是有关联的第一数据块的,在调用该程序的时候,要同时更新该程序关联的数据块,如数据块是{count:5,function:aaa,timestamp:20181029120159},下一次名为“aaa”的程序再被函数计算平台调用,则调用计数count加1,即调用计算count变成6,而调用时间timestamp更新为最新的调用时间,而且该程序已经存放在缓存空间,再次调用也不会更换存放在缓存空间中的其他程序,因此更新数据块的记录内容之后不需要进行数据块的优先级排序。
进一步地,在步骤S2之后,还包括:
S21、若存在第一数据块,则将第一数据块中的调用计数加一,并且更新调用时间;
S22、获取第二数据块,重新根据预设规则将第一数据块和第二数据块进行第二优先级排序;
S23、按照第二优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,判断第一程序是否需要替换第二程序。
在本实施例中,程序在调用时,存在与其关联的数据块,那么说明该程序之前被调用过,但是没有达到存放在缓存空间的优先级条件,在检测到程序被调用后,需要更新与其关联的数据块,然后获取所有在缓存空间的程序关联的数据块,重新根据预设排序规则将被调用程序的数据块和所有存放在缓存空间中程序关联的数据块进行优先级排序,目的是根据数据块排序找出相对优先级高的、重要的对应的程序,以调整程序的相对优先级,优先级排序排在前面的数据块关联的程序调用比较频繁、相对优先级比较高,这是因为程序过去被调用多次,那么将来被调用的频率也更好,重新按照优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,以确定被调用的程序能否存放在缓存空间,即被调用的程序能否替换已存放在缓存空间中的某个程序,以保证存放到缓存空间的程序都是调用比较频繁的,都是相对优先级比较高的,函数计算平台经常调用上述程序可以省去在数据库的查找调用的时间,提高程序的加载效率。
进一步地,在步骤S3中,包括:
S31、判断第一程序是否满足预设条件;
S32、若满足预设条件,则获取第一程序的调用计数、程序名称和调用时间,以生成与第一程序关联的第一数据块,其中调用计数默认为一。
在本实施例中,由于缓存空间的空间容量有限,不可能每个程序都预先存放到缓存空间中,通过预设条件,限定可以预先存放到缓存空间中的程序,有必要的程序在其被第一次调用的时候,才会去获取程序的调用计数、程序名称和调用时间,以生成与其关联的数据块,当然由于是第一次调用,所以调用计数默认为一,程序生成与其关联的数据块才会参与优先级排序,以判断程序是否需要预先存放到缓存空间,对不符合要求的程序则不生成与其关联的数据块,不参与排序,也就不会预先存放到缓存空间,避免不符合预设条件的程序也要进行存放到缓存空间、或可能替换缓存空间的程序的操作,提高程序加载的效率,提高函数计算平台的性能。
进一步地,在步骤31之中,包括:
S311、判断第一程序的文件大小是否小于预设阈值;
S312、若小于预设阈值,则判断第一程序是否被用户标记为重要;
S313、若标记为重要,则判定第一程序满足预设条件。
在本实施例中,由于缓存空间的空间有限,程序如果太大,则不适合存放到缓存空间中,程序的文件大小的阈值为人为设定,如将阈值设定为100MB,即当程序的文件大小小于100Mb的时候才适合存放到缓存空间中。其次,当该程序被用户设置为重要、性能级别要求高的情况下,用户主观有使用程序的需求,这个标记可以在用户上传程序的时候在函数计算平台上进行标记,函数计算平台上设有重要标记勾选功能。当程序满足以上两种条件的情况下,判断程序满足预设条件,生成与程序关联数据块,可以进行优先级排序。
进一步地,步骤S4之中,包括:
S41、根据调用计数从大到小将数据块依次排序,其中若有调用计数相同的数据块,则根据调用时间按时间降序排序。
在上述步骤S41中,预设的规则主要根据程序的历史访问频率来确定数据块的排序,排序的实现方式可以如下:每个数据块都有一个调用计数,根据调用计数从大到小将数据块依次排序的时候,如果遇到调用计数相同的数据块则获取调用时间,根据调用时间按时间降序排序,即调用时间早的数据块排在调用时间晚的数据块后面,然后调用时间早的继续根据调用计数与其他数据块排序,以最终完成数据块的优先级排序,调用时间早的数据块排在调用时间晚的数据块后面的理由是因为它等待了更长的时间都没有等来第二次调用,从概率上讲,它下次被调用的几率会小一些。也可以是另一种排序实现方式:可以先根据调用计数从大到小将数据块依次排序,如果遇到调用计数相同的数据块则先默认排在该数据块前面,待数据块按照调用计数从大到小排序完之后,再将具有相同引用的数据块按照调用时间排序,调用时间早的数据块排在调用时间晚的数据块后面,最终完成数据块的排序。
进一步地,在步骤S1之前,还包括:
S12、接收用户上传的第一程序和程序信息,程序信息包括程序名称、代码语言、文件类型和文件数量;
S13、根据所述程序信息按照预设存储规则将所述第一程序存储在数据库中。
在本实施例中,要使用函数计算平台,用户首先要将编写好的程序上传到函数计算平台中并保存,在用户上传程序时会在函数计算平台上输入上传程序的程序信息,待用户确定后,函数计算平台接收用户上传的程序信息,根据存储规则依次判断代码语言是脚本语言还是非脚本语言,文件数量是多个还是单个,文件类型是压缩包还是非压缩包,以确定要执行的存储步骤,储存的文件根据接收的程序名称命名,预设存储规则可以将代码语言、文件类型、文件数量等存储在一列表中,列表可以如下表1-1。
表1-1
若程序功能比较复杂,需要多个程序文件来一起完成,用户将多个程序文件上传后,函数计算平台接收的程序信息为代码语言是脚本语言、文件数量是多个、文件类型是非压缩包,通过接收的程序信息在存储规则表中查询到要先打包压缩,再转化为base64格式,则函数计算平台将用户上传的多个程序文件打包压缩形成一个整体,再转化为base64格式后存储在数据库中,针对这整体文件设置一个程序名称,设置的程序名称也是通过用户上传的程序信息中的程序名称,后续用户在函数计算平台上可以通过这个程序名称来调用这程序的所有程序文件,这样减少查找多个程序文件的时间,提高程序加载效率,提高函数计算平台的性能。当用户上传的程序的文件数量是单个,而且代码语言是脚本语言,则直接将程序转换为base64格式存储在数据库中,这是由于脚本语言不用编译,直接转化为base64格式可以减少压缩也解压的过程,不同的程序根据实际情况采用不同的存取方式可以提高程序加载效率,提高函数计算平台的性能,而且最终格式转换为base64格式,base64就是一种基于64个可打印字符来表示二进制数据的方法,还可以节约存储空间。
参照图2,本发明还提出一种提高程序加载效率的装置,包括:
第一检测模块1,用于当第一程序被调用时,检测第一程序是否存放在缓存空间;
第二检测模块2,用于若第一检测模块的检测结果为否,则检测是否存在与第一程序关联的第一数据块,第一数据块记录第一程序的调用计数、程序名称和调用时间调用计数;
生成模块3,用于若第二检测模块的检测结果为否,则生成与第一程序关联的第一数据块;
第一排序模块4,用于获取存放在缓存空间中的所有第二程序关联的第二数据块,按照预设排序规则将第一数据块和第二数据块进行第一优先级排序;
存放模块5,用于按照第一优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,以确定第一程序是否可以预先存放到缓存空间。
在上述第一检测模块1中,函数计算平台在调用程序的时候,都是先检测调用的程序是否存放在缓存空间中,如果程序已存放在缓存空间,则可以直接从缓存空间中调用,提高程序加载效率。
在上述第二检测模块2中若缓存空间中没有存放被调用的程序,则可以考虑被调用的程序是第一次调用还是之前有调用过但是没有达到存放在缓存空间的条件,所以检测是否存在与被调用程序关联的数据块来判断是上述的哪种情况,而设置的与程序关联的数据块是用来记录程序被函数计算平台调用频率的数据结构。如数据块可以通过语句{count:5,function:aaa,timestamp:20181029120159}来表示,其中,count表示调用计数、function表示程序名称,timestamp表示调用时间,上面的数据块记录的意思是程序名称为“aaa”的程序被调用了5次,最近一次调用时间是2018年10月29日12点1分59秒。
在上述生成模块3中,若被调用的程序没有关联的数据块,则可以确定该被调用的程序是第一次调用,则生成与该程序关联的数据块,后续可以判断该程序是否可以存放到缓存空间。
在上述第一排序模块4中,要判断被调用的程序是否可以存放在缓存空间,只需要和已存放到缓存空间中的所有程序进行比较即可,因此获取缓存空间中所有程序关联的数据块,由于数据块是与程序关联的,按照预定规则将被调用程序关联的数据块和在缓存空间中的程序关联的据块进行优先级排序,目的也是对被调用的程序和在缓存空间中的所有程序进行优先级排序,数据块优先级排序顺序即对应程序的优先级排序顺序,排在前面的程序相对于排在后面的程序来说优先级是比较高的,即比较重要的或是调用频繁的。
在上述存放模块5中,如排在前面的程序优先级相对比较高、调用相对比较频繁,程序过去被调用多次,那么将来被调用的频率也更好,因此根据数据块优先级排序顺序,依次将排在前面的数据块对应的程序预先存放到缓存空间中,具体将排在前面的多少个程序加载到缓存空间,这要看具体的缓存空间是多少来决定,其中存放到缓存空间的程序不会溢出缓存,如缓存空间在存放到100个程序后,缓存空间满了,那么就是将第一优先级排序一至一百的数据块对应的程序预先存放到缓存空间,前一百个数据块对应程序相对于排在后面的程序来说都是优先级高的,调用频繁的,有较大的可能会经常使用到,如果被调用的程序关联的数据块刚好排在一百以内,则被调用的程序可以存放到缓存空间,函数计算平台在调用程序的时候,对于调用已经在缓存空间中的程序,即优先级高的程序,可以直接在缓存空间中调用,而无需要再从数据库查询调用程序,减少函数计算平台调用程序的步骤,能节约调用时间,同时避免优先级很低、相对不重要的程序也要进行存放到缓存空间、或可能替换缓存空间中的程序的操作,提高程序加载的效率,提高函数计算平台的性能。
进一步地,还包括:
第一更新模块,若第一检测模块的检测结果为是,则将第一数据块中的调用计数加一,并且更新调用时间。
在上述第一更新模块中,若被调用的程序在缓存空间,则函数计算平台可以直接在缓存空间调用程序,同时由于被调用的程序在缓存空间,则可以说明该程序是有关联的第一数据块的,在调用该程序的时候,要同时更新该程序关联的数据块,如数据块是{count:5,function:aaa,timestamp:20181029120159},下一次名为“aaa”的程序再被函数计算平台调用,则调用计数count加1,即调用计算count变成6,而调用时间timestamp更新为最新的调用时间,而且该程序已经存放在缓存空间,再次调用也不会更换存放在缓存空间中的其他程序,因此更新数据块的记录内容之后不需要进行数据块的优先级排序。
进一步地,还包括:
第二更新模块,若第二检测模块的检测结果为是,则将第一数据块中的调用计数加一,并且更新调用时间;
第二排序模块,用于获取第二数据块,重新根据预设规则将第一数据块和第二数据块进行第二优先级排序;
替换模块,用于按照第二优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,判断第一程序是否需要替换第二程序。
在本实施例中,程序在调用时,存在与其关联的数据块,那么说明该程序之前被调用过,但是没有达到存放在缓存空间的优先级条件,在检测到程序被调用后,需要更新与其关联的数据块,然后获取所有在缓存空间的程序关联的数据块,重新根据预设排序规则将被调用程序的数据块和所有存放在缓存空间中程序关联的数据块进行优先级排序,目的是根据数据块排序找出相对优先级高的、重要的对应的程序,以调整程序的相对优先级,优先级排序排在前面的数据块关联的程序调用比较频繁、相对优先级比较高,这是因为程序过去被调用多次,那么将来被调用的频率也更好,重新按照优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,以确定被调用的程序能否存放在缓存空间,即被调用的程序能否替换已存放在缓存空间中的某个程序,以保证存放到缓存空间的程序都是调用比较频繁的,都是相对优先级比较高的,函数计算平台经常调用上述程序可以省去在数据库的查找调用的时间,提高程序的加载效率。
进一步地,在生成模块3中,包括:
判断子模块,用于判断第一程序是否满足预设条件;
生成子模块,用于若判断子模块的判断结果为是,则获取第一程序的调用计数、程序名称和调用时间,以生成与第一程序关联的第一数据块,其中调用计数默认为一。
在本实施例中,由于缓存空间容量有限,不可能每个程序都预先存放到缓存空间中,通过预设条件,限定可以预先存放到缓存空间中的程序,有必要的程序在其被第一次调用的时候,才会去获取程序的调用计数、程序名称和调用时间,以生成与其关联的数据块,当然由于是第一次调用,所以调用计数默认为一,程序生成与其关联的数据块才会参与优先级排序,以判断程序是否需要预先存放到缓存空间,对不符合要求的程序则不生成与其关联的数据块,不参与排序,也就不会预先存放到缓存空间,避免不符合预设条件的程序也要进行存放到缓存空间、或可能替换缓存空间的程序的操作,提高程序加载的效率,提高函数计算平台的性能。
进一步地,在判断子模块中,包括:
第一判断单元,用于判断第一程序的文件大小是否小于预设阈值;
第二判断单元,用于若第一判断单元的判断结果为是,则判断第一程序是否被用户标记为重要;
判定单元,用于若第二判断单元的判断结果为是,则判定第一程序满足预设条件。
在本实施例中,由于缓存空间的空间有限,程序如果太大,则不适合存放到缓存空间中,程序的文件大小的阈值为人为设定,如将阈值设定为100MB,即当程序的文件大小小于100Mb的时候才适合存放到缓存空间中。其次,当该程序被用户设置为重要、性能级别要求高的情况下,用户主观有使用程序的需求,这个标记可以在用户上传程序的时候在函数计算平台上进行标记,函数计算平台上设有重要标记勾选功能。当程序满足以上两种条件的情况下,判断程序满足预设条件,生成与程序关联数据块,可以进行优先级排序。
进一步地,在第一排序模块4中,包括:
排序子模块,用于根据调用计数从大到小将数据块依次排序,其中若有调用计数相同的数据块,则根据调用时间按时间降序排序。
在上述排序子模块中,预设的规则主要根据程序的历史访问频率来确定数据块的排序,排序的实现方式可以如下:每个数据块都有一个调用计数,根据调用计数从大到小将数据块依次排序的时候,如果遇到调用计数相同的数据块则获取调用时间,根据调用时间按时间降序排序,即调用时间早的数据块排在调用时间晚的数据块后面,然后调用时间早的继续根据调用计数与其他数据块排序,以最终完成数据块的优先级排序,调用时间早的数据块排在调用时间晚的数据块后面的理由是因为它等待了更长的时间都没有等来第二次调用,从概率上讲,它下次被调用的几率会小一些。也可以是另一种排序实现方式:根据调用计数从大到小将数据块依次排序,如果遇到调用计数相同的数据块则先默认排在该数据块前面,待数据块按照调用计数从大到小排序完之后,再将具有相同引用的数据块按照调用时间排序,调用时间早的数据块排在调用时间晚的数据块后面,最终完成数据块的排序。
进一步地,还包括:
接收模块,用于接收用户上传的第一程序和程序信息,程序信息包程序名称、代码语言、文件类型和文件数量;
存储模块,用于根据程序信息按照预设存储规则将第一程序存储在数据库中。
在本实施例中,要使用函数计算平台,用户首先要将编写好的程序上传到函数计算平台中并保存,在用户上传程序时会在函数计算平台上输入上传程序的程序信息,待用户确定后,函数计算平台接收用户上传的程序信息,根据存储规则依次判断代码语言是脚本语言还是非脚本语言,文件数量是多个还是单个,文件类型是压缩包还是非压缩包,以确定要执行的存储步骤,储存的文件根据接收的程序名称命名,预设存储规则可以将代码语言、文件类型、文件数量等存储在一列表中,列表可以如表1-1。
若程序功能比较复杂,需要多个程序文件来一起完成,用户将多个程序文件上传后,函数计算平台接收的程序信息为代码语言是脚本语言、文件数量是多个、文件类型是非压缩包,通过接收的程序信息在存储规则表中查询到要先打包压缩,再转化为base64格式,则函数计算平台将用户上传的多个程序文件打包压缩形成一个整体,再转化为base64格式后存储在数据库中,针对这整体文件设置一个程序名称,设置的程序名称也是通过用户上传的程序信息中程序名称,后续用户在函数计算平台上可以通过这个程序名称来调用这程序的所有程序文件,这样减少查找多个程序的时间,提高程序加载效率,提高函数计算平台的性能。当用户上传的程序的文件数量是单个,而且代码语言是脚本语言,则直接将程序文件转换为base64格式存储在数据库中,这是由于脚本语言不用编译,直接转化为base64格式可以减少压缩也解压的过程,不同的程序根据实际情况采用不同的存取方式可以提高程序加载效率,提高函数计算平台的性能,而且最终格式转换为base64格式,base64就是一种基于64个可打印字符来表示二进制数据的方法,还可以节约存储空间。
参照图3,本发明实施例中还提供一种计算机设备,该计算机设备可以是计算机或服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机可读指令和数据库。该内存器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。该设备的数据库用于存储配置项信息等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机可读指令在执行时,执行如上述各方法的实施例的流程。本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本发明一实施例还提供一种计算机非易失性可读存储介质,其上存储有计算机可读指令,该计算机可读指令在执行时,执行如上述各方法的实施例的流程,包括:当第一程序被调用时,检测第一程序是否存放在缓存空间;若不在缓存空间,则检测是否存在与第一程序关联的第一数据块,第一数据块记录第一程序的调用计数、程序名称和调用时间;若不存在第一数据块,则生成与第一程序关联的第一数据块;获取存放在缓存空间中的所有第二程序关联的第二数据块,按照预设排序规则将第一数据块和第二数据块进行第一优先级排序;按照第一优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,以确定第一程序是否可以预先存放到缓存空间。
通过与程序关联的数据块,并对数据块进行优先级排序,根据优先级排序情况将优先级相对高的数据块对应的程序预先存放到缓存空间,当函数计算平台调用优先级高、频繁调用的程序时,可以直接从缓存中调用,省去在数据库查找程序的时间,同时避免优先级很低、调用不频繁的程序也要进行存放到缓存空间、或可能替换缓存空间中的程序的操作,提高程序加载的效率,提高函数计算平台的性能。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (9)
1.一种提高程序加载效率的方法,其特征在于,包括:
接收用户上传的第一程序和程序信息,程序信息包括程序名称、代码语言、文件类型和文件数量,并根据存储规则依次判断代码语言是脚本语言还是非脚本语言,文件数量是多个还是单个,文件类型是压缩包还是非压缩包,以确定要执行的存储步骤;
根据所述程序信息按照预设存储规则将所述第一程序存储在数据库中;
当第一程序被调用时,检测所述第一程序是否存放在缓存空间;
若不在缓存空间,则检测是否存在与所述第一程序关联的第一数据块,所述第一数据块记录所述第一程序的调用计数、程序名称和调用时间;
若不存在所述第一数据块,则生成与所述第一程序关联的所述第一数据块;
获取存放在缓存空间中的所有第二程序关联的第二数据块,按照预设排序规则将所述第一数据块和所述第二数据块进行第一优先级排序;
按照第一优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,以确定所述第一程序是否可以预先存放到缓存空间;
所述生成与所述第一程序关联的所述第一数据块的步骤中,包括:
判断所述第一程序是否满足预设条件;
若满足预设条件,则获取所述第一程序的所述调用计数、所述程序名称和所述调用时间,以生成与所述第一程序关联的所述第一数据块,其中所述调用计数默认为一。
2.根据权利要求1所述的提高程序加载效率的方法,其特征在于,所述判断所述第一程序是否满足预设条件的步骤中,包括:
判断所述第一程序的文件大小是否小于预设阈值;
若小于预设阈值,则判断所述第一程序是否被用户标记为重要;
若标记为重要,则判定所述第一程序满足所述预设条件。
3.根据权利要求1所述的提高程序加载效率的方法,其特征在于,所述按照预设排序规则将所述第一数据块和所述第二数据块进行第一优先级排序的步骤中,包括:
根据所述调用计数从大到小将数据块依次排序,其中若有所述调用计数相同的数据块,则根据所述调用时间按时间降序排序。
4.根据权利要求1所述的提高程序加载效率的方法,其特征在于,检测是否存在与所述第一程序关联的第一数据块的步骤之后,还包括:
若存在所述第一数据块,则将所述第一数据块中的所述调用计数加一,并且更新所述调用时间;
获取所述第二数据块,重新根据所述预设排序规则将所述第一数据块和所述第二数据块进行第二优先级排序;
按照第二优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,判断所述第一程序是否可以替换所述第二程序。
5.根据权利要求1所述的提高程序加载效率的方法,其特征在于,所述获取存放在缓存空间中的所有第二程序关联的第二数据块的步骤之前,还包括:
判断缓存空间是否足够存放所述第一程序;
若足够存放,则将所述第一程序存放到缓存空间;
若不足够存放,则获取存放在缓存空间中的所有第二程序关联的第二数据块。
6.根据权利要求1所述的提高程序加载效率的方法,其特征在于,所述当第一程序被调用时,检测所述第一程序是否存放在缓存空间的步骤之后,还包括:
若在缓存空间,则将所述第一数据块中的所述调用计数加一,并且更新所述调用时间。
7.一种提高程序加载效率的装置,其特征在于,包括:
接收模块,用于接收用户上传的第一程序和程序信息,程序信息包程序名称、代码语言、文件类型和文件数量,并根据存储规则依次判断代码语言是脚本语言还是非脚本语言,文件数量是多个还是单个,文件类型是压缩包还是非压缩包,以确定要执行的存储步骤;
存储模块,用于根据程序信息按照预设存储规则将第一程序存储在数据库中;
第一检测模块,用于当第一程序被调用时,检测所述第一程序是否存放在缓存空间;
第二检测模块,用于若第一检测模块的检测结果为否,则检测是否存在与所述第一程序关联的第一数据块,所述第一数据块记录所述第一程序的调用计数、程序名称和调用时间;
生成模块,用于若第二检测模块的检测结果为否,则生成与所述第一程序关联的所述第一数据块;
第一排序模块,用于获取存放在缓存空间中的所有第二程序关联的第二数据块,按照预设排序规则将所述第一数据块和所述第二数据块进行第一优先级排序;
存放模块,用于按照第一优先级排序顺序,依次将排序在前的数据块关联的程序存放到缓存空间,其中存放到缓存空间的程序不会溢出缓存,以确定所述第一程序是否可以预先存放到缓存空间;
生成模块,包括:
判断子模块,用于判断第一程序是否满足预设条件;
生成子模块,用于若判断子模块的判断结果为是,则获取第一程序的调用计数、程序名称和调用时间,以生成与第一程序关联的第一数据块,其中调用计数默认为一。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机可读指令,其特征在于,所述处理器执行所述计算机可读指令时实现权利要求1至6任一项所述方法的步骤。
9.一种计算机非易失性可读存储介质,其上存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时实现权利要求1至6中任一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910319067.4A CN110147258B (zh) | 2019-04-19 | 2019-04-19 | 提高程序加载效率的方法、装置、计算机设备和存储介质 |
PCT/CN2019/118166 WO2020211363A1 (zh) | 2019-04-19 | 2019-11-13 | 提高程序加载效率的方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910319067.4A CN110147258B (zh) | 2019-04-19 | 2019-04-19 | 提高程序加载效率的方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110147258A CN110147258A (zh) | 2019-08-20 |
CN110147258B true CN110147258B (zh) | 2022-08-16 |
Family
ID=67588544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910319067.4A Active CN110147258B (zh) | 2019-04-19 | 2019-04-19 | 提高程序加载效率的方法、装置、计算机设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110147258B (zh) |
WO (1) | WO2020211363A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110147258B (zh) * | 2019-04-19 | 2022-08-16 | 平安科技(深圳)有限公司 | 提高程序加载效率的方法、装置、计算机设备和存储介质 |
CN110716764A (zh) * | 2019-09-09 | 2020-01-21 | 深圳壹账通智能科技有限公司 | 公有配置的共享方法、装置、计算机设备及存储介质 |
CN111596966A (zh) * | 2020-04-27 | 2020-08-28 | 五八有限公司 | 一种子应用加载方法及装置 |
CN114528052A (zh) * | 2022-02-24 | 2022-05-24 | 浙江大华技术股份有限公司 | 数据的加载方法、装置、存储介质及电子装置 |
CN117311595A (zh) * | 2022-06-23 | 2023-12-29 | 华为技术有限公司 | 数据处理方法、处理器、计算设备及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5212794A (en) * | 1990-06-01 | 1993-05-18 | Hewlett-Packard Company | Method for optimizing computer code to provide more efficient execution on computers having cache memories |
CN107872523A (zh) * | 2017-11-07 | 2018-04-03 | 广东欧珀移动通信有限公司 | 网络数据的加载方法、装置、存储介质及移动终端 |
CN109542530A (zh) * | 2018-10-26 | 2019-03-29 | 深圳点猫科技有限公司 | 一种基于小程序架构的分级加载方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6934699B1 (en) * | 1999-09-01 | 2005-08-23 | International Business Machines Corporation | System and method for loading a cache with query results |
CN102541602A (zh) * | 2011-12-28 | 2012-07-04 | 用友软件股份有限公司 | 界面的预加载装置和预加载方法 |
WO2013101138A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Identifying and prioritizing critical instructions within processor circuitry |
US9268573B2 (en) * | 2012-11-02 | 2016-02-23 | Michael Rolle | Methods for decoding and dispatching program instructions |
US9244827B2 (en) * | 2013-09-25 | 2016-01-26 | Intel Corporation | Store address prediction for memory disambiguation in a processing device |
CN108549556B (zh) * | 2018-04-16 | 2021-06-01 | 腾讯科技(北京)有限公司 | 一种应用程序加速方法、装置、终端及存储介质 |
CN110147258B (zh) * | 2019-04-19 | 2022-08-16 | 平安科技(深圳)有限公司 | 提高程序加载效率的方法、装置、计算机设备和存储介质 |
-
2019
- 2019-04-19 CN CN201910319067.4A patent/CN110147258B/zh active Active
- 2019-11-13 WO PCT/CN2019/118166 patent/WO2020211363A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5212794A (en) * | 1990-06-01 | 1993-05-18 | Hewlett-Packard Company | Method for optimizing computer code to provide more efficient execution on computers having cache memories |
CN107872523A (zh) * | 2017-11-07 | 2018-04-03 | 广东欧珀移动通信有限公司 | 网络数据的加载方法、装置、存储介质及移动终端 |
CN109542530A (zh) * | 2018-10-26 | 2019-03-29 | 深圳点猫科技有限公司 | 一种基于小程序架构的分级加载方法及装置 |
Non-Patent Citations (1)
Title |
---|
支持软件按需流式加载的预取机制;钟亮 等;《计算机研究与发展》;20111231;第1178-1189页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2020211363A1 (zh) | 2020-10-22 |
CN110147258A (zh) | 2019-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110147258B (zh) | 提高程序加载效率的方法、装置、计算机设备和存储介质 | |
CN109446173B (zh) | 日志数据处理方法、装置、计算机设备和存储介质 | |
CN109918079B (zh) | 规则引擎系统的规则更新方法、装置和计算机设备 | |
CN110851159B (zh) | 业务规则更新方法、装置、计算机设备和存储介质 | |
CN111800459A (zh) | 下载任务异步处理方法、装置、系统和存储介质 | |
CN110633160A (zh) | 接口调用方法、装置、计算机设备和存储介质 | |
CN110908778B (zh) | 任务部署方法、系统和存储介质 | |
CN111263354B (zh) | 一种ota差分升级方法及装置 | |
CN111367925A (zh) | 数据动态实时更新方法、装置及存储介质 | |
CN108924258B (zh) | 后台信息推送方法、装置、计算机设备和存储介质 | |
CN108845869B (zh) | 并发请求控制方法、装置、计算机设备和存储介质 | |
CN110018969B (zh) | 数据缓存方法、装置、计算机设备和存储介质 | |
CN111198856A (zh) | 文件管理方法、装置、计算机设备和存储介质 | |
CN113282354A (zh) | 应用程序的h5页面加载方法、装置、设备及存储介质 | |
CN108512948B (zh) | 通讯录更新方法、装置、计算机设备和存储介质 | |
CN112153170A (zh) | 访问服务器的方法、装置、设备及存储介质 | |
CN115390944A (zh) | 一种算法服务调用方法、装置、电子设备及存储介质 | |
CN109614399B (zh) | 位图数据查询方法、装置、计算机设备和存储介质 | |
CN108897772B (zh) | 数据源补充方法、装置、计算机设备和存储介质 | |
CN108389124B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN113961179A (zh) | Soar平台的服务接入方法、系统、电子装置和存储介质 | |
CN110648052B (zh) | 风控决策方法、装置、计算机设备和存储介质 | |
CN110955450A (zh) | 一种应用包文件的归属统计方法、系统及存储介质 | |
CN114218188A (zh) | 数据迁移方法、装置、设备及存储介质 | |
CN112286704B (zh) | 延时任务的处理方法、装置、计算机设备及存储介质 |
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 |