一种软件优化方法及装置
技术领域
本发明涉及电子技术领域,尤其涉及一种软件优化方法及装置。
背景技术
随着计算机科学技术的发展,计算机在各个领域中扮演着越来越重要的角色,因此各个领域对计算机的计算能力越来越高的要求。为了获得更高的计算能力,一般通过提高计算并行程度来提高计算机运行性能,其中,CPU(Central Processing Unit,中央处理器)厂商通过增加CPU的核数来提高计算机的计算能力,软件厂商通过提升软件的并行能力来提供更快的软件。
在现有技术方案中,第一,通过多核CPU将任务划分为更小粒度的子任务来并行执行以进行算法优化,可以减少CPU在闲置等待上面的时间浪费,从而提高计算效率。第二,通过减少指令条数,循环优化,分支跳转优化,优化数据结构,减少缓存遗漏等方式以进行指令级的性能优化。但是,上述优化方法都是在软件运行之前均已完成,因此有必要提供一种在软件运行过程中对软件进行优化的方法。
发明内容
本发明实施例提供一种软件优化方法及装置。可以减少软件执行过程中的循环和判断流程,提高软件的执行效率。
本发明实施例第一方面提供了一种软件优化方法,包括:
通过扫描软件获取所述软件中的优化代码段;
根据当前所述优化代码段所挂接的业务配置,将所述优化代码段生成得到函数指令;
在所述软件运行到所述优化代码段的预设起始位置时,执行生成得到的所述函数指令。
在第一方面的第一种可能的实现方式中,所述通过扫描软件获取所述软件中的预设优化代码段包括:
获取所述优化代码段的预设起始位置以及预设结束位置;
根据所述优化代码段的预设起始位置以及预设结束位置,识别出所述软件中的优化代码段。
在第一方面的第二种可能的实现方式中,所述根据当前所述优化代码段所挂接的业务配置,将所述优化代码段生成得到函数指令包括:
根据当前所述优化代码段所挂接的业务配置,运行所述优化代码段;
获取所述优化代码段的运行结果;
根据所述优化代码段的运行结果生成得到函数指令。
在第一方面的第三种可能的实现方式中,所述根据当前所述优化代码段所挂接的业务配置,将所述优化代码段生成得到函数指令包括:
根据当前所述优化代码段所挂接的业务配置,在预设的第一指令生成区将所述优化代码段生成得到函数指令。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据当前所述优化代码段所挂接的业务配置,将所述优化代码段生成得到函数指令包括:
判断所述优化代码段所挂接的业务配置是否发生切换;
若所述优化代码段所挂接的业务配置发生切换,则在预设的第二指令生成区将所述优化代码段生成得到函数指令。
结合第一方面的第三种可能的实现方式,在第一方面的第五种可能的实现方式中,所述在所述软件运行到所述优化代码段的预设起始位置时,执行生成得到的所述函数指令包括:
在所述软件运行到所述优化代码段的预设起始位置时,获取所述预设的第一指令生成区的地址;
根据所述预设的第一指令生成区的地址,跳转到所述预设的第一指令生成区执行所述函数指令。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述根据所述预设的第一指令生成区的地址,跳转到所述预设的第一指令生成区执行所述函数指令之后,还包括:
在所述函数指令执行完成时,获取所述优化代码段的预设结束位置;
根据所述优化代码段的预设结束位置,跳转到所述优化代码段的预设结束位置处执行所述软件中其他代码段。
相应地,本发明实施例第二方面提供了一种软件优化装置,包括:
代码段获取模块,用于通过扫描软件获取所述软件中的优化代码段;
指令生成模块,用于根据当前所述优化代码段所挂接的业务配置,将所述优化代码段生成得到函数指令;
指令执行模块,用于在所述软件运行到所述优化代码段的预设起始位置时,执行生成得到的所述函数指令。
在第二方面的第一种可能的实现方式中,所述代码段获取模块包括:
地址获取单元,用于获取所述优化代码段的预设起始位置以及预设结束位置;
代码段识别单元,用于根据所述优化代码段的预设起始位置以及预设结束位置,识别出所述软件中的优化代码段。
在第二方面的第二种可能的实现方式中,所述指令生成模块,具体用于根据当前所述优化代码段所挂接的业务配置,运行所述优化代码段;获取所述优化代码段的运行结果;根据所述优化代码段的运行结果生成得到函数指令。
在第二方面的第三种可能的实现方式中,所述指令生成模块,具体用于根据当前所述优化代码段所挂接的业务配置,在预设的第一指令生成区将所述优化代码段生成得到函数指令。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述指令生成模块,还用于判断所述优化代码段所挂接的业务配置是否发生切换;若所述优化代码段所挂接的业务配置发生切换,则在预设的第二指令生成区将所述优化代码段生成得到函数指令。
结合第二方面的第三种可能的实现方式,在第二方面的第五种可能的实现方式中,所述指令执行模块,具体用于在所述软件运行到所述优化代码段的预设起始位置时,获取所述预设的第一指令生成区的地址;根据所述预设的第一指令生成区的地址,跳转到所述预设的第一指令生成区执行所述函数指令。
结合第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述指令执行模块,还用于在所述函数指令执行完成时,获取所述优化代码段的预设结束位置;根据所述优化代码段的预设结束位置,跳转到所述优化代码段的预设结束位置处执行所述软件中其他代码段。
相应地,本发明实施例第二方面提供了另一种软件优化装置,所述装置包括网络接口、存储器以及处理器,其中,存储器中存储一组程序代码,且处理器用于调用存储器中存储的程序代码,用于执行以下操作:
通过扫描软件获取所述软件中的优化代码段;
根据当前所述优化代码段所挂接的业务配置,将所述优化代码段生成得到函数指令;
在所述软件运行到所述优化代码段的预设起始位置时,执行生成得到的所述函数指令。
实施本发明实施例,首先通过扫描软件获取软件中的优化代码段;然后根据当前优化代码段所挂接的业务配置,将优化代码段生成得到函数指令;最后在软件运行到优化代码段的起始位置时,执行生成得到的函数指令,从而减少了软件执行过程中的循环和判断流程,提高了软件的执行效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提出的一种软件优化方法的第一实施例的流程图;
图2是本发明提出的一种软件优化方法的另一实施例的流程图;
图3是本发明实施例提供的一种软件优化流程的显示示意图;
图4是本发明实施例提出的一种软件优化装置的结构示意图;
图5是本发明实施例提出的软件优化装置中代码段获取模块的结构示意图;
图6是本发明提出的一种软件优化装置的另一实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1是本发明提出的一种软件优化方法的第一实施例的流程图。如图所示,本发明实施例中的软件优化方法包括:
S101,通过扫描软件获取所述软件中的优化代码段。
具体实现中,可以获取优化代码段的预设起始位置以及预设结束位置;根据优化代码段的预设起始位置以及预设结束位置,识别出软件中的优化代码段。例如:如图3所示,软件包括代码段A、代码段B以及代码段C,其中,代码段B为优化代码段。在编写代码时可以预先标记代码段B的起始位置以及结束位置以在对软件进行扫描时扫描得到代码段B。需要说明的是,软件的执行流程不局限于包括如图3所示的3个代码段,还可以包括其他任何数量的代码段,同时,优化代码段也不局限于包括如图3所示的1个代码段,还可以包括其他数量的代码段,可以同时对多个优化代码段进行处理。
S102,根据当前所述优化代码段所挂接的业务配置,将所述优化代码段生成得到函数指令。
具体实现中,根据当前所述优化代码段所挂接的业务配置,运行所述优化代码段;获取所述优化代码段的运行结果;根据所述优化代码段的运行结果生成得到函数指令。其中,业务配置可以为预设的配置文件或者用户控制台输入的指令。
例如:网络设备在处理一个报文时,报文处理过程包括收包、包处理流程1、包处理流程2、包处理流程3以及发包等阶段,系统除了执行上述处理报文的几个阶段之外,在每个处理阶段的前后可能加入一些业务配置的点,如:NAT(Network Address Translation,网络地址转换)策略配置,通过注册回调函数将这些业务配置的点挂接到软件的主流程运行过程中,软件优化代码段所挂接的业务配置不同,软件优化代码段的运行结果不同。因此,多个业务配置可以分别对应一个函数指令。进一步的,当某个/些业务配置从所述优化代码段去除后,相应的,回调函数也从所述优化代码段摘除。
可选的,根据当前优化代码段所挂接的业务配置,在预设的第一指令生成区将优化代码段生成得到函数指令。
可选的,判断优化代码段所挂接的业务配置是否发生切换;若优化代码段所挂接的业务配置发生切换,则在预设的第二指令生成区将优化代码段生成得到函数指令。具体的,软件的处理过程包括初始化流程以及主循环流程,在初始化流程中优化代码所挂接的业务配置为软件上一次运行时挂接的业务配置,并且该业务配置对应的函数指令存储在预设的第一指令生成区。因此,在初始化过程结束执行主循环过程时,如果优化代码段所挂接的业务配置发生切换,则在预设的第二指令生成区将所述优化代码段生成得到函数指令。如果优化代码段所挂接的业务配置未发生切换,则可以继续执行下述步骤。
S103,在所述软件运行到所述优化代码段的预设起始位置时,执行生成得到的所述函数指令。
具体实现中,可以在软件运行到优化代码段的预设起始位置时,获取预设的第一指令生成区的地址;根据预设的第一指令生成区的地址,跳转到预设的第一指令生成区执行函数指令。在函数指令执行完成时,获取优化代码段的预设结束位置;根据优化代码段的预设结束位置,跳转到优化代码段的预设结束位置处执行软件中其他代码段。
例如:如图3所示,当检测到代码段A执行完成并运行到代码段B的预设起始位置时,主循环过程跳转到如图3右侧所示的指令生成区,当函数指令执行完成时,主循环过程跳转到代码段B的预设结束位置,开始执行代码段C,直到软件运行结束。
可选的,如果优化代码段所挂接的业务配置发生切换,在根据优化代码段所挂接的新的业务配置,在预设的第二指令生成区将优化代码段生成得到新的函数指令之后,当软件运行到所述优化代码段的预设起始位置时,跳转到预设的第二指令生成区执行新的函数指令。
在本发明实施例中,首先通过扫描软件获取软件中的优化代码段;然后根据当前优化代码段所挂接的业务配置,将优化代码段生成得到函数指令;最后在软件运行到优化代码段的起始位置时,执行生成得到的函数指令,从而减少了软件执行过程中的循环和判断流程,提高了软件的执行效率。
请参考图2,图2是本发明提出的一种软件优化方法的另一实施例的流程图。如图所示,本发明实施例中的软件优化方法包括:
S201,通过扫描软件获取所述软件中的优化代码段。
具体实现中,可以获取优化代码段的预设起始位置以及预设结束位置;根据优化代码段的预设起始位置以及预设结束位置,识别出软件中的优化代码段。例如:如图3所示,软件包括代码段A、代码段B以及代码段C,其中,代码段B为优化代码段。在编写代码时可以预先标记代码段B的起始位置以及结束位置以在对软件进行扫描时扫描得到代码段B。需要说明的是,软件的执行流程不局限于包括如图3所示的3个代码段,还可以包括其他任何数量的代码段,同时,优化代码段也不局限于包括如图3所示的1个代码段,还可以包括其他数量的代码段,可以同时对多个优化代码段进行处理。
S202,根据当前所述优化代码段所挂接的业务配置,将所述优化代码段生成得到函数指令。
具体实现中,根据当前优化代码段所挂接的业务配置,运行优化代码段;获取优化代码段的运行结果;根据优化代码段的运行结果生成得到函数指令。其中,业务配置可以为预设的配置文件或者用户控制台输入的指令。
例如:网络设备在处理一个报文时,报文处理过程包括收包、包处理流程1、包处理流程2、包处理流程3以及发包等阶段,系统除了执行上述处理报文的几个阶段之外,在每个处理阶段的前后可能加入一些业务配置的点,如:NAT(Network Address Translation,网络地址转换)策略配置,通过注册回调函数将这些业务配置的点挂接到软件的主流程运行过程中,软件优化代码段所挂接的业务配置不同,软件优化代码段的运行结果不同。因此,多个业务配置可以分别对应一个函数指令。进一步的,当某个/些业务配置从所述优化代码段去除后,相应的,回调函数也从所述优化代码段摘除。
可选的,根据当前优化代码段所挂接的业务配置,在预设的第一指令生成区将优化代码段生成得到函数指令。
可选的,判断优化代码段所挂接的业务配置是否发生切换;若优化代码段所挂接的业务配置发生切换,则在预设的第二指令生成区将优化代码段生成得到函数指令。具体的,软件的处理过程包括初始化流程以及主循环流程,在初始化流程中优化代码所挂接的业务配置为软件上一次运行时挂接的业务配置,并且该业务配置对应的函数指令存储在预设的第一指令生成区。因此,在初始化过程结束执行主循环过程时,如果优化代码段所挂接的业务配置发生切换,则在预设的第二指令生成区将所述优化代码段生成得到函数指令。如果优化代码段所挂接的业务配置未发生切换,则可以继续执行下述步骤。
S203,在所述软件运行到所述优化代码段的预设起始位置时,获取所述预设的第一指令生成区的地址。
S204,根据所述预设的第一指令生成区的地址,跳转到所述预设的第一指令生成区执行所述函数指令。
具体实现中,在函数指令执行完成时,获取优化代码段的预设结束位置;根据优化代码段的预设结束位置,跳转到优化代码段的预设结束位置处执行软件中其他代码段。
例如:如图3所示,当检测到代码段A执行完成并运行到代码段B的预设起始位置时,主循环过程跳转到如图3右侧所示的指令生成区,当函数指令执行完成时,主循环过程跳转到代码段B的预设结束位置,开始执行代码段C,直到软件运行结束。
可选的,如果优化代码段所挂接的业务配置发生切换,在根据优化代码段所挂接的新的业务配置,在预设的第二指令生成区将优化代码段生成得到新的函数指令之后,当软件运行到所述优化代码段的预设起始位置时,跳转到预设的第二指令生成区执行新的函数指令。
在本发明实施例中,首先通过扫描软件获取软件中的优化代码段;然后根据当前优化代码段所挂接的业务配置,将优化代码段生成得到函数指令;最后在软件运行到优化代码段的起始位置时,执行生成得到的函数指令,从而减少了软件执行过程中的循环和判断流程,提高了软件的执行效率。
请参考图4,图4是本发明实施例提出的一种软件优化装置的结构示意图。如图所示,本发明实施例中的软件优化装置包括:
代码段获取模块401,用于通过扫描软件获取所述软件中的优化代码段。
具体实现中,如图5所示,代码段获取模块401可以进一步包括:
地址获取单元501,用于获取所述优化代码段的预设起始位置以及预设结束位置。
代码段识别单元502,用于根据所述优化代码段的预设起始位置以及预设结束位置,识别出所述软件中的优化代码段。
例如:如图3所示,软件包括代码段A、代码段B以及代码段C,其中,代码段B为优化代码段。在编写代码时可以预先标记代码段B的起始位置以及结束位置以在对软件进行扫描时扫描得到代码段B。需要说明的是,软件的执行流程不局限于包括如图3所示的3个代码段,还可以包括其他任何数量的代码段,同时,优化代码段也不局限于包括如图3所示的1个代码段,还可以包括其他数量的代码段,可以同时对多个优化代码段进行处理。
指令生成模块402,用于根据当前所述优化代码段所挂接的业务配置,将所述优化代码段生成得到函数指令。
具体实现中,根据当前所述优化代码段所挂接的业务配置,运行所述优化代码段;获取所述优化代码段的运行结果;根据所述优化代码段的运行结果生成得到函数指令。其中,业务配置可以为预设的配置文件或者用户控制台输入的指令。
例如:网络设备在处理一个报文时,报文处理过程包括收包、包处理流程1、包处理流程2、包处理流程3以及发包等阶段,系统除了执行上述处理报文的几个阶段之外,在每个处理阶段的前后可能加入一些业务配置的点,如:NAT(Network Address Translation,网络地址转换)策略配置,通过注册回调函数将这些业务配置的点挂接到软件的主流程运行过程中,软件优化代码段所挂接的业务配置不同,软件优化代码段的运行结果不同。因此,多个业务配置可以分别对应一个函数指令。进一步的,当某个/些业务配置从所述优化代码段去除后,相应的,回调函数也从所述优化代码段摘除。
可选的,根据当前所述优化代码段所挂接的业务配置,在预设的第一指令生成区将所述优化代码段生成得到函数指令。
可选的,判断优化代码段所挂接的业务配置是否发生切换;若优化代码段所挂接的业务配置发生切换,则在预设的第二指令生成区将优化代码段生成得到函数指令。具体的,软件的处理过程包括初始化流程以及主循环流程,在初始化流程中优化代码所挂接的业务配置为软件上一次运行时挂接的业务配置,并且该业务配置对应的函数指令存储在预设的第一指令生成区。因此,在初始化过程结束执行主循环过程时,如果优化代码段所挂接的业务配置发生切换,则在预设的第二指令生成区将所述优化代码段生成得到函数指令。如果优化代码段所挂接的业务配置未发生切换,则可以继续执行下述操作模块。
指令执行模块403,用于在所述软件运行到所述优化代码段的预设起始位置时,执行生成得到的所述函数指令。
具体实现中,可以在软件运行到优化代码段的预设起始位置时,获取预设的第一指令生成区的地址;根据预设的第一指令生成区的地址,跳转到预设的第一指令生成区执行函数指令。在函数指令执行完成时,获取优化代码段的预设结束位置;根据优化代码段的预设结束位置,跳转到优化代码段的预设结束位置处执行软件中其他代码段。
例如:如图3所示,当检测到代码段A执行完成并运行到代码段B的预设起始位置时,主循环过程跳转到如图3右侧所示的指令生成区,当函数指令执行完成时,主循环过程跳转到代码段B的预设结束位置,开始执行代码段C,直到软件运行结束。
可选的,如果优化代码段所挂接的业务配置发生切换,在根据优化代码段所挂接的新的业务配置,在预设的第二指令生成区将优化代码段生成得到新的函数指令之后,当软件运行到所述优化代码段的预设起始位置时,跳转到预设的第二指令生成区执行新的函数指令。
在本发明实施例中,首先通过扫描软件获取软件中的优化代码段;然后根据当前优化代码段所挂接的业务配置,将优化代码段生成得到函数指令;最后在软件运行到优化代码段的起始位置时,执行生成得到的函数指令,从而减少了软件执行过程中的循环和判断流程,提高了软件的执行效率。
图6是本发明提出的一种软件优化装置的另一实施例的结构示意图。如图所示,该装置可以包括:至少一个处理器601,例如CPU,至少一个接收器603,至少一个存储器604,至少一个发送器605,至少一个通信总线602。其中,通信总线602用于实现这些组件之间的连接通信。其中,本发明实施例中装置的接收器603和发送器605可以是有线发送端口,也可以为无线设备,例如包括天线装置,用于与其他节点设备进行信令或数据的通信。存储器604可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器604可选的还可以是至少一个位于远离前述处理器601的存储装置。存储器604中存储一组程序代码,且处理器用于调用存储器中存储的程序代码,用于执行以下操作:
通过扫描软件获取所述软件中的优化代码段;
根据当前所述优化代码段所挂接的业务配置,将所述优化代码段生成得到函数指令;
在所述软件运行到所述优化代码段的预设起始位置时,执行生成得到的所述函数指令。
需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上对本发明实施例所提供的内容下载方法及相关设备、系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。