优化程序的方法及装置与流程

文档序号:12362981阅读:202来源:国知局
优化程序的方法及装置与流程

本公开涉及计算机领域,具体地,涉及一种优化程序的方法及装置。



背景技术:

随着软件编程技术的发展,服务器中执行的程序越来越多。如何提高服务器执行程序的效率逐渐成为用户关注的问题。相关技术中,对于包括多个逻辑分支的程序,多个逻辑分支的先后顺序是随机的,因此,执行该程序的时间复杂度较高,服务器执行程序的效率较低。

举例来讲,一个程序有3个逻辑分支,分别是逻辑分支A、逻辑分支B、和逻辑分支C,在该程序中,这三个逻辑分支的先后顺序是随机的。一种可能的情况是:先后顺序为:逻辑分支A→逻辑分支B→逻辑分支C。因此,在实际执行该程序的过程中,需要依次判断是否满足执行逻辑分支A、逻辑分支B、逻辑分支C的情况,即为:如果满足执行逻辑分支A的情况,则执行逻辑分支A,执行完逻辑分支A后退出;否则如果满足执行逻辑分支B的情况,则执行逻辑分支B,执行完逻辑分支B后退出;否则如果满足执行逻辑分支C的情况,则执行逻辑分支C,执行完逻辑分支C后退出。有可能最终真正被执行的是逻辑分支C,但是却经历了判断是否满足逻辑分支A、逻辑分支B的情况,因此,时间复杂度较高,服务器执行程序的效率较低。



技术实现要素:

本公开的目的是提供一种执行程序的方法及装置,以降低执行程序的时间复杂度,提高服务器执行程序的效率。

为了实现上述目的,本公开提供一种执行程序的方法,其特征在于,应用于服务器,所述方法包括:

根据程序执行日志,确定目标程序包括的n个逻辑分支分别出现的次数,其中,n为大于等于1的整数;

分别确定所述n个逻辑分支中每个逻辑分支的权重因子;

按照所述n个逻辑分支的权重因子从大到小的顺序,将所述n个逻辑分支排列在所述目标程序中。

可选地,所述n个逻辑分支的权重因子符合以下公式:

其中,α(i)表示所述n个逻辑分支中第i个逻辑分支的权重因子,f(i)表示所述n个逻辑分支中第i个逻辑分支出现的次数,f(k)示所述各个逻辑分支中第k个逻辑分支出现的次数,i和k均为大于等于1且小于等于n的整数。

可选地,所述根据程序执行日志,确定目标程序包括的n个逻辑分支分别出现的次数,包括:

根据程序执行日志,确定所述n个逻辑分支分别被执行的时间点;

统计所述n个逻辑分支分别被执行的时间点的个数。

可选地,所述方法还包括:

按照所述n个逻辑分支的权重因子从大到小的顺序,将所述n个逻辑分支依次存入配置文件;

在所述服务器启动后,将所述配置文件加载到内存中;

根据所述配置文件,执行所述目标程序。

可选地,所述配置文件包括n个列表元素,所述n个列表元素的标号与所述n个逻辑分支的权重因子序号相同。

本发明还提供一种执行程序的装置,配置于服务器,所述装置包括:

次数确定模块,用于根据程序执行日志,确定目标程序包括的n个逻辑分支分别出现的次数,其中,n为大于等于1的整数;

权重因子确定模块,用于分别确定所述n个逻辑分支中每个逻辑分支的权重因子;

排列模块,用于按照所述n个逻辑分支的权重因子从大到小的顺序,将所述n个逻辑分支排列在所述目标程序中。

可选地,所述n个逻辑分支的权重因子符合以下公式:

其中,α(i)表示所述n个逻辑分支中第i个逻辑分支的权重因子,f(i)表示所述n个逻辑分支中第i个逻辑分支出现的次数,f(k)示所述各个逻辑分支中第k个逻辑分支出现的次数,i和k均为大于等于1且小于等于n的整数。

可选地,所述次数确定模块包括:

确定子模块,用于根据程序执行日志,确定所述n个逻辑分支分别被执行的时间点;

统计子模块,用于统计所述n个逻辑分支分别被执行的时间点的个数。

可选地,所述装置还包括:

存储模块,用于按照所述n个逻辑分支的权重因子从大到小的顺序,将所述n个逻辑分支依次存入配置文件;

加载模块,用于在所述服务器启动后,将所述配置文件加载到内存中;

执行模块,用于根据所述配置文件,执行所述目标程序。

可选地,所述配置文件包括n个列表元素,所述n个列表元素的标号与所述n个逻辑分支的权重因子序号相同。

通过上述技术方案,根据程序执行日志,确定每个逻辑分支出现的次数,并确定每个逻辑分支的权重因子,进而按照权重因子从大到小的顺序,将各个逻辑分支排列在目标程序。因此,出现次数多的逻辑分支被排在前面,在执行目标程序的过程中,出现次数多的逻辑分支被优先考虑,降低了执行目标程序的时间复杂度,提高了服务器执行程序的效率。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1为本发明实施例提供的一种执行程序的方法的流程图。

图2为本发明实施例提供的一种执行程序的方法中步骤S11的流程图。

图3为本发明实施例提供的一种执行程序的方法的另一流程图。

图4为本发明实施例提供的一种执行程序的装置的框图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

本发明实施例提供了一种执行程序的方法。请参考图1,图1为本发明实施例提供的一种执行程序的方法的流程图。如图1所示,该方法包括以下步骤:

步骤S11:根据程序执行日志,确定目标程序包括的n个逻辑分支分别出现的次数,其中,n为大于等于1的整数;

步骤S12:分别确定所述n个逻辑分支中每个逻辑分支的权重因子;

步骤S13:按照所述n个逻辑分支的权重因子从大到小的顺序,将所述n个逻辑分支排列在所述目标程序中。

本发明实施例中,为了提高服务器执行目标程序的效率,对程序执行日志进行分析,根据逻辑分支出现的次数,确定逻辑分支的权重因子,然后将权重因子较大的逻辑分支放在前面,在执行目标程序时,优先考虑权重因子较大的逻辑分支,以提高服务器执行目标程序的效率。

由于程序执行日志反映的是程序最终执行的情况,所以从程序执行日志中可以确定出各个逻辑分支出现的次数,也就是各个逻辑分支被执行的次数,然后可以确定各个逻辑分支的权重因子,也就是确定各个逻辑分支被执行的次数占所有逻辑分支被执行的总次数的比重。一个逻辑分支的权重因子越大,说明该逻辑分支被执行的可能性越大,为了降低时间复杂度,可以将该逻辑分支排列在前面,这样,就可以优先判断是否满足执行该逻辑分支的情况并根据判断结果执行该逻辑分支,而不用依次判断是否满足执行各个逻辑分支的情况,所以降低了时间复杂度。

可选地,所述n个逻辑分支的权重因子符合以下公式:

其中,α(i)表示所述n个逻辑分支中第i个逻辑分支的权重因子,f(i)表示所述n个逻辑分支中第i个逻辑分支出现的次数,f(k)示所述各个逻辑分支中第k个逻辑分支出现的次数,i和k均为大于等于1且小于等于n的整数。

本发明实施例中,首先确定各个逻辑分支出现的次数,然后确定各个逻辑分支出现的次数之和,这样,每个逻辑分支的权重因子即为该逻辑分支出现的次数占各个逻辑分支出现的次数之和的比重。

举例来讲,一个程序有3个逻辑分支,分别是逻辑分支A、逻辑分支B、和逻辑分支C。通过对该程序的程序执行日志进行分析,确定逻辑分支A、逻辑分支B以及逻辑分支C分别出现的次数是20次、30次、50次,则逻辑分支A、逻辑分支B以及逻辑分支C出现的次数之和是100次。这样,逻辑分支A的权重因子同理,逻辑分支B的权重因子逻辑分支C的权重因子

可选地,如图2所示,所述步骤S11包括:

步骤S111:根据程序执行日志,确定所述n个逻辑分支分别被执行的时间点;

步骤S112:统计所述n个逻辑分支分别被执行的时间点的个数。

本发明实施例中,考虑到程序执行日志中记录了在不同时间点被执行的代码,所以可以从程序执行日志中查询到各个逻辑分支分别被执行的时间点,然后统计各个逻辑分支被执行的时间点的个数,将统计出的时间点个数作为逻辑分支出现的次数。

举例来讲,一个程序有3个逻辑分支,分别是逻辑分支A、逻辑分支B、和逻辑分支C。该程序的程序执行日志中记录了在10点10分20秒,逻辑分支A被执行;在10点11分10秒,逻辑分支C被执行;在10点12分10秒,逻辑分支A被执行;在10点20分0秒,该程序执行完毕。则可以得出:逻辑分支被执行的时间点有两个:10点10分20秒以及10点12分10秒,因此,逻辑分支A出现的次数是2次。逻辑分支C被执行的时间点有1个:10点11分10秒。因此,逻辑分支C出现的次数是1次。逻辑分支B被执行的时间点有0个,因此,逻辑分支B出现的次数是0次。

可选地,如图3所示,本发明实施例提供的方法除包括步骤S11-步骤S13外,还包括以下步骤:

步骤S14:按照所述n个逻辑分支的权重因子从大到小的顺序,将所述n个逻辑分支依次存入配置文件;

步骤S15:在所述服务器启动后,将所述配置文件加载到内存中;

步骤S16:根据所述配置文件,执行所述目标程序。

本发明实施例中,为了提高服务器执行目标程序的效率,提出配置文件,在确定目标程序包括的n个逻辑分支的权重因子后,可以按照权重因子从小到大的顺序,将逻辑分支存入配置文件。然后,在服务器启动后,将配置文件加载到内存中,最后,在执行目标程序的过程中,按照配置文件中逻辑分支的顺序,可以优先考虑权重因子较大的逻辑分支,权重因子较大的逻辑分支被执行的可能性较大,无需因逐个考虑其他逻辑分支而浪费时间,因此降低了执行目标程序的时间复杂度,提高了服务器执行程序的效率。

采用上述技术方案,无论目标程序包括的逻辑分支原本的排序如何,都可以在配置文件中按照权重因子从大到小的顺序对逻辑分支进行排序,进而在执行程序的过程中,读取配置文件,达到权重因子较大的逻辑分支被优先考虑的目的。

可选地,所述配置文件包括n个列表元素,所述n个列表元素的标号与所述n个逻辑分支的权重因子序号相同。

本发明实施例中,配置文件可以是以列表的形式的存在的。配置文件包括n个列表元素:List(0)、List(1)……List(n)。无论目标程序是什么,配置文件中的列表元素是不变的。在确定n个逻辑分支的权重因子,按照权重因子从大到小的顺序,将逻辑分支与列表元素一一对应,且使得逻辑分支的权重因子序号与列表元素的序号相同。

举例来讲,一个程序有3个逻辑分支,分别是逻辑分支A、逻辑分支B、和逻辑分支C。假设按照权重因子从大到小的顺序依次排列为:逻辑分支C、逻辑分支B、和逻辑分支A,则令List(0)=C、List(1)=B、List(2)=A。如果权重因子排序发生改变,按照权重因子从大到小的顺序依次排列改变为:逻辑分支B、逻辑分支A、和逻辑分支C,则相应地改变与各个列表元素对应的逻辑分支,令List(0)=B、List(1)=A、List(2)=C。

基于同一发明构思,本发明实施例还提供一种执行程序的装置,配置于服务器。如图4所示,所述装置100包括:

次数确定模块110,用于根据程序执行日志,确定目标程序包括的n个逻辑分支分别出现的次数,其中,n为大于等于1的整数;

权重因子确定模块120,用于分别确定所述n个逻辑分支中每个逻辑分支的权重因子;

排列模块130,用于按照所述n个逻辑分支的权重因子从大到小的顺序,将所述n个逻辑分支排列在所述目标程序中。

可选地,所述n个逻辑分支的权重因子符合以下公式:

其中,α(i)表示所述n个逻辑分支中第i个逻辑分支的权重因子,f(i)表示所述n个逻辑分支中第i个逻辑分支出现的次数,f(k)示所述各个逻辑分支中第k个逻辑分支出现的次数,i和k均为大于等于1且小于等于n的整数。

可选地,所述次数确定模块110包括:

确定子模块,用于根据程序执行日志,确定所述n个逻辑分支分别被执行的时间点;

统计子模块,用于统计所述n个逻辑分支分别被执行的时间点的个数。

可选地,所述装置还包括:

存储模块,用于按照所述n个逻辑分支的权重因子从大到小的顺序,将所述n个逻辑分支依次存入配置文件;

加载模块,用于在所述服务器启动后,将所述配置文件加载到内存中;

执行模块,用于根据所述配置文件,执行所述目标程序。

可选地,所述配置文件包括n个列表元素,所述n个列表元素的标号与所述n个逻辑分支的权重因子序号相同。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。

此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1