基于单条指令的代码耗时统计方法、系统及存储介质与流程

文档序号:15557704发布日期:2018-09-29 01:30阅读:158来源:国知局

本发明涉及代码测试技术,尤其涉及一种基于单条指令的代码耗时统计方法、系统及存储介质,属于计算机领域。



背景技术:

目前,随着计算机技术的发展以及用户需求,开发人员开发出了大量的软件。为了向用户提供质量更高的软件,需要对软件进行多方面的测试。其中,一项重要指标为软件的运行速度。

现有技术中,可以统计单条指令(或完整独立代码)的执行时间,来测试软件代码的性能。一般情况下,若要统计单条指令(或完整独立代码)中部分代码的执行时间,则需要提取整个代码块中的部分代码,再对其进行必要的改动,以保证其能够正常运行,然后对处理后的部分代码进行测试。

现有技术中对于单条指令(或完整独立代码)中部分代码的执行时间的测试方案中,需要对代码进行修改,导致测试效率较低。同时,对代码进行修改以后再运行这部分代码,与将该代码放到整个代码块中的运行过程会存在一定差异,这就会导致测试时获取的该部分代码的运行时间,与将其放置到整个软件中的运行时间不同,造成测试结果不准确的问题。



技术实现要素:

本发明提供一种基于单条指令的代码耗时统计方法、系统及存储介质,通过在原有的指令代码中加入辅助标识,再在指令代码的运行过程中检测到辅助标识时,发送特定信息,就能够根据接收特定信息的时间,确定出两个相邻的辅助标识之间的部分代码运行所需要的时间,相较于现有技术的方案,能够提高检测效率以及准确性。

本发明的第一个方面是提供一种基于单条指令的代码耗时统计方法,包括:

接收运行指令;

根据所述运行指令运行指令代码,并在运行所述指令代码的过程中,检测预先设置在所述指令代码中的辅助标记;

若检测到所述辅助标记,则发送与所述辅助标记对应的特定信息,以使接收所述特定信息的设备,能够根据接收所述特定信息的时间确定所述指令代码中包括的各部分代码的运行时间。

本发明的另一个方面是提供一种基于单条指令的代码耗时统计系统,包括:代码装置、计算装置;

所述代码装置包括:

接收模块,用于接收运行指令;

运行模块,用于根据所述运行指令运行指令代码,并在运行所述指令代码的过程中,检测预先设置在所述指令代码中的辅助标记;

发送模块,用于若检测到所述辅助标记,则发送与所述辅助标记对应的特定信息,以使接收所述特定信息的所述计算装置,能够根据接收所述特定信息的时间确定所述指令代码中包括的各部分代码的运行时间。

本发明的又一个方面是提供一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上所述的方法。

本发明提供的基于单条指令的代码耗时统计方法、系统及计算机可读存储介质的技术效果是:

本实施例提供的基于单条指令的代码耗时统计方法、系统及计算机可读存储介质,包括接收运行指令;根据运行指令运行指令代码,并在运行指令代码的过程中,检测预先设置在指令代码中的辅助标记;若检测到辅助标记,则发送与辅助标记对应的特定信息,以使接收特定信息的设备,能够根据接收特定信息的时间确定所述指令代码中包括的各部分代码的运行时间。采用本实施例提供的基于单条指令的代码耗时统计方法、系统及存储介质,无需对指令代码进行拆分,再依次检测被拆分的每部分代码的运行时间,仅需要在原有的代码中加入辅助标识,再在指令代码的运行过程中检测到辅助标识时,发送特定信息,就能够根据接收特定信息的时间,确定出两个相邻的辅助标识之间的代码运行所需要的时间。因此,本实施例提供的方法及系统能够提高代码耗时检测的效率,而且更加准确。

附图说明

图1为本发明一示例性实施例示出的基于单条指令的代码耗时统计方法的流程图;

图2为本发明另一示例性实施例示出的基于单条指令的代码耗时统计方法的流程图;

图3为本发明一示例性实施例示出的基于单条指令的代码耗时统计系统的结构图;

图4为本发明另一示例性实施例示出的基于单条指令的代码耗时统计系统的结构图。

具体实施方式

首先对本申请所涉及的名词进行解释:

指令代码:是指令对应的源代码。

图1为本发明一示例性实施例示出的基于单条指令的代码耗时统计方法的流程图。

如图1所示,本实施例提供的基于单条指令的代码耗时统计方法包括:

步骤101,接收运行指令。

其中,运行指令是用于指示开始检测指令代码耗时的指令。可以由用户主动发送运行指令,也可以是系统根据预设的规则自动执行该指令。例如,可以在更新代码以后,系统自动开启统计指令代码耗时的功能,也可以是用户提前设置开始统计时间,从而将时间作为触发开启统计指令耗时功能的条件。

具体的,由执行本实施例提供的方法的装置或部件接收该运行指令,并解析该运行指令。运行指令中可以包括需要统计的指令代码本身或该指令代码的标识,还可以包括其他辅助代码标识或辅助代码本身,辅助代码用于辅助检测指令代码中各部分代码的耗时情况。通过解析运行指令,可以获得其中包括的指令代码以及辅助代码,进而能够运行指令代码以及辅助代码。

本实施例提供的方法用于统计指令代码中包括的各个部分代码的耗时情况,该方法由存储有指令代码的设备以及用于计算代码运行时间的设备执行,其中,这两个设备可以集成为一个装置,也可以独立设置,该装置通常以硬件和/或软件的方式来实现。

步骤102,根据运行指令运行指令代码,并在运行指令代码的过程中,检测预先设置在指令代码中的辅助标记。

进一步的,可以预先在指令代码中设置辅助标记,可以通过辅助标记分割出需要检测耗时的指令的各个部分。例如,指令代码中共包括5个部分,则可以设置6个辅助标识,使得每两个辅助标识之间为待测试的部分代码。

实际应用时,可以根据运行指令运行与该指令对应的指令代码,并且在运行指令代码时,检测其中设置的辅助标记。例如,辅助标记可以是特定名称的变量,在逐行运行指令代码(即指令对应的源代码)时,若读取到变量,则可以认为检测到了辅助标记。为了在逐行运行指令代码时,能够识别出哪些是正常的代码哪些是辅助标记,可以预先存储辅助标记格式,或者直接存储辅助标记的内容。从而可以通过比对的方式,确定出指令代码中的辅助标记。

步骤103,若检测到辅助标记,则发送与辅助标记对应的特定信息;以使接收特定信息的设备,能够根据接收特定信息的时间确定指令代码中包括的各部分代码的运行时间。

其中,当检测到辅助标记后,便可以根据预设规则发送特定信息,具体的,特定信息可以由运行本实施例提供的设备中的其他组件接收,也可以由其他设备进行接收。接收特定信息的组件或装置用于根据接收特定信息的时间确定指令代码中包括的各部分代码的运行时间。

可以以检测智能卡应用的单条指令的运行时间为例,说明本实施例提供的方案。在智能卡应用的指令代码中加入辅助标记,用户通过操作读卡设备,向智能卡应用发送运行指令,从而使智能卡应用运行该运行指令对应的指令代码,在逐行运行指令代码的过程中,检测预先设置的辅助标记,并且,在检测到辅助标记后,向读卡设备发送特定信息,由读卡设备根据智能卡应用中的指令代码反馈的特定信息,计算指令代码中各部分代码的耗时情况。

具体的,特定信息与辅助标记相对应,可以设定预设规则,例如,在辅助标记中增加一位数字,生成与该辅助标记对应的特定信息,如辅助标记对应的变量值为0x0011,与其相应的特定信息为0x0111。特定信息还可以是读取到辅助标识时的时间。

进一步的,接收特定信息的设备可以根据接收特定信息的时间确定各部分代码的运行时间。

若特定信息为读取到辅助标识的时间,则可以直接根据读取相邻辅助标记对应的时间计算时间差,并将时间差确定为辅助标记之间这部分代码的运行时间。若特定信息为其他信息,则可以计算接收相邻的辅助标记对应的特定信息的时间差,并将这个时间差确定为辅助标记之间这部分代码的运行时间。

例如,指令代码中共包括3部分代码,分别为代码11、代码12、代码13,分别在代码11前、代码11与代码12之间、代码12与代码13之间、代码13之后设置辅助标记01、12、23、30。可以获取在检测到各个辅助标记时发送特定信息的时间t01、t12、t23、t30。

其中,开始运行指令代码时,检测到辅助标记01,此时在t01时刻发送第一个特定信息,然后读取并运行第一部分代码11,运行完毕后读取到第二个辅助标记12,此时能够在t12时刻发送第二个特定信息,那么t01与t12之间的时间差可以认为是代码11的运行时间。其他代码12、13的运行时间也可以通过这样的方法确定。

具体的,也可以不在整个指令代码的最前端设置辅助标记,此时,可以直接将指令代码开始运行的时间作为t01。

本实施例提供的基于单条指令的代码耗时统计方法,包括接收运行指令;根据运行指令运行指令代码,并在运行指令代码的过程中,检测预先设置在指令代码中的辅助标记;若检测到辅助标记,则发送与辅助标记对应的特定信息,以使接收特定信息的设备,能够根据接收特定信息的时间确定指令代码中包括的各部分代码的运行时间。采用本实施例提供的基于单条指令的代码耗时统计方法,无需对指令代码进行拆分,再依次检测被拆分的每部分代码的运行时间,仅需要在原有的代码中加入辅助标识,再在指令代码的运行过程中检测到辅助标识时,发送特定信息,就能够根据接收特定信息的时间,确定出两个相邻的辅助标识之间的代码运行所需要的时间。因此,本实施例提供的方法能够提高代码耗时检测的效率,而且更加准确。

图2为本发明另一示例性实施例示出的基于单条指令的代码耗时统计方法的流程图。

如图2所示,本实施例提供的基于单条指令的代码耗时统计方法,包括:

步骤201,接收运行指令。

步骤201与步骤101的具体原理和实现方式相同,在此不再赘述。

步骤202,根据预设规则在辅助标记中确定目标辅助标记。

其中,可以预先设置用于确定目标辅助标记的预设规则。可以将所有的辅助标记确定为目标辅助标记,还可以将除去指令代码前设置的以外的辅助标记确定为目标辅助标记,另外,还可以按照辅助标记在指令代码中的位置,依次将各个辅助标记确定为目标辅助标记。

具体的,在第一种应用场景中,将所有的辅助标记确定为目标辅助标记,或将除去指令代码前设置的以外的辅助标记确定为目标辅助标记,则可以不执行步骤205,在步骤204之后直接执行步骤206。在第二种应用场景中,若依次将各个辅助标记确定为目标辅助标记,则可以执行步骤205,用于检测是否遍历完毕所有的辅助标记。

步骤203,根据运行指令运行指令代码,并在运行指令代码的过程中,检测指令代码中的目标辅助标记。

在第一种应用场景中,可以按照指令代码的逻辑运行指令代码,并在运行过程中,检测其中设置的目标辅助标记。此时,可以运行完毕整个指令代码,并检测出多个目标辅助标记。

在第二种应用场景中,可以按照指令代码的逻辑运行指令代码,并在运行过程中,检测其中设置的目标辅助标记。此时,可以运行完毕整个指令代码,并检测出一个目标辅助标记;还可以执行部分指令代码,并检测出一个目标辅助标记。

具体的,可以设置在检测到目标辅助标记时,就终断待检测指令的运行。

步骤204,若检测到目标辅助标记,则发送与目标辅助标记对应的特定信息,以使接收特定信息的设备,能够根据接收特定信息的时间确定指令代码中包括的各部分代码的运行时间。

进一步的,若检测到目标辅助标记,则发送与目标辅助标记对应的特定信息。

在第一种应用场景中,执行一次指令代码,就能够检测出多个目标辅助标记,并且发送出多个特定信息。能够缩短测试过程的时间。

在第二种应用场景中,执行一次指令代码,仅能够检测出一个目标辅助标记,并且发送出一个特定信息。需要调整目标辅助标记,并多次执行指令代码,从而获得需要的全部的特定信息。由于在执行过程中,仅检测一次辅助标记并发送一个特定信息,因此,不存在由于发送特定信息导致运行指令代码的时间变长的问题,能够更进一步的提高本实施例提供的方法的准确性。

其中,特定信息可以由运行本实施例提供的设备中的其他组件接收,也可以由其他设备进行接收。接收特定信息的设备根据接收特定信息的时间确定指令部分代码的运行时间具体可以包括:

获取与第一辅助标记、第二辅助标记对应的第一特定信息、第二特定信息,其中,在指令代码中,第一辅助标记、第二辅助标记之间没有任何其他辅助标记;

在第一种应用场景中,获取第一辅助标记、第二辅助标记所对应的第一特定信息、第二特定信息。如辅助标记12与辅助标记23,获取与辅助标记12、辅助标记23对应的特定信息。

若特定信息为读取到辅助标记的时间信息,则可以直接计算两个特定信息的差值,得到时间差,那么该时间差即为代码12的运行时间。

若特定信息为其他类型的数据信息,那么可以计算发送第一特定信息与第二特定信息的时间差,并将时间差确定为第一辅助标记、第二辅助标记之间的部分代码的运行时间,即代码12的运行时间。

在第二种应用场景中,每执行一次待检测代码,就能够得到一个特定信息,例如,目标辅助标识为12时,得到的特定信息即为与12对应的第一特定信息,目标辅助标识为23时,得到的特定信息即为与23对应的第二特定信息。

若特定信息为读取到辅助标记的时间信息,则可以直接计算两个特定信息的差值,得到时间差,那么该时间差即为代码12的运行时间。

若特定信息为其类型的数据信息,那么可以计算发送第一特定信息与第二特定信息的时间差,并将时间差确定为第一辅助标记、第二辅助标记之间的部分代码的运行时间,即代码12的运行时间。

另外,该特定信息还可以是在读取到辅助标记时,指令代码抛出异常数据信息。

在第一种应用场景中,可以在步骤204之后直接执行步骤206。也可以执行步骤205,以免在检测时遗漏辅助标记。

在第二中应用场景中,执行完步骤204后,继续执行步骤205。

步骤205,检测是否发送了所有辅助标记对应的特定信息。

若是,则执行步骤206。若检测所有的辅助标记对应的特定信息都被发送过了,则证明所有的辅助标记都被遍历过一遍,没有遗漏,因此,可以执行步骤206。

若否,则执行步骤202。重新确定目标辅助标记,并根据目标辅助标记继续运行指令代码,发送与该目标辅助标记对应的特定信息。

下面以第二种应用场景为例,解释说明本实施例所提供的方法。

指令代码包括3部分代码,代码21、代码22、代码23,分别在代码21前、代码21与代码22之间、代码22与代码23之间、代码23之后设置辅助标记01、12、23、30。

接收运行指令后,确定目标辅助标记为01,运行指令代码,检测到01后中断并返回特定信息。与该特定信息对应的时间为t01。检测没有发送完毕所有辅助标记对应的特定信息。则继续确定目标辅助标记为12,运行指令代码,检测到12后中断并返回特定信息,与该特定信息对应的时间为t12,此时运行了代码11。检测没有发送完毕所有辅助标记对应的特定信息。则继续确定目标辅助标记为23,运行指令代码,检测到辅助标记23后中断并返回特定信息,与该特定信息对应的时间为t23,此时运行了代码11、12。检测没有发送完毕所有辅助标记对应的特定信息。则继续确定目标辅助标记为30,运行指令代码,检测到辅助标记30后中断并返回特定信息,与该特定信息对应的时间为t30,此时运行了代码11、12、13。检测发送完毕所有辅助标记对应的特定信息。

步骤206,接收特定信息的设备根据指令代码中的各部分代码的运行时间,确定指令代码中各部分代码的耗时分布情况。

可选的,接收特定信息的设备在确定完指令代码包括的各部分代码的耗时情况之后,可以确定在整个指令代码中,是否有某部分代码运行时间占比较大的问题。

具体可以将各部分代码的执行时间相加得到总时间,再计算每部分代码的执行时间与总时间的比值,得到各部分代码的执行时间的占比。

还可以将计算结果以柱形图、饼形图、波形图、折线图等多种形式展现出来,使用户能够更直观的看到指令代码中包括的各部分代码运行耗时的情况。

可选的,还可以多次执行步骤202-205,针对每部分代码获取多个运行时间,再计算每部分代码对应的多个运行时间的平均值,从而更准确的得到每部分代码的运行时间,再根据每部分代码的平均运行时间,确定待测指令的各部分代码的耗时分布情况。

可选的,还可以根据需求调整各个辅助标记的位置,从而使确定结果更加准确。

本实施例提供的指令耗时统计方法,可以针对两种应用场景提供不同的处理方法,在第一种应用场景中,能够缩短整个测试过程的时间,在第二种应用场景中,通过将辅助标记依次设置为目标辅助标记,并多次执行指令代码,能够使获得的时间数据更为准确。同时,本实施例提供的方案,能够根据需求调整辅助代码的位置,就能够对不同分割的指令部分代码耗时进行检测,无需对指令代码本身进行修改,因此,本实施例提供的方案的效率更高,在运用过程中也更加灵活。

图3为本发明一示例性实施例示出的基于单条指令的代码耗时统计系统的结构图。

如图3所示,本实施例提供的系统,包括:代码装置31、计算装置32;

所述代码装置31包括:

接收模块311,用于接收运行指令;

运行模块312,用于根据所述运行指令运行指令代码,并在运行所述指令代码的过程中,检测预先设置在所述指令代码中的辅助标记;

发送模块313,用于若检测到所述辅助标记,则发送与所述辅助标记对应的特定信息,以使接收所述特定信息的计算装置,能够根据接收所述特定信息的时间确定所述指令代码中包括的各部分代码的运行时间。

本实施例提供的基于单条指令的代码耗时统计系统,包括接收运行指令;根据运行指令运行指令代码,并在运行指令代码的过程中,检测预先设置在指令代码中的辅助标记;若检测到辅助标记,则发送与辅助标记对应的特定信息,以使接收特定信息的设备,能够根据接收特定信息的时间确定指令代码中包括的各部分代码的运行时间。采用本实施例提供的基于单条指令的代码耗时统计系统,无需对指令代码进行拆分,再依次检测被拆分的每部分代码的运行时间,仅需要在原有的指令代码中加入辅助标识,再在代码的运行过程中检测到辅助标识时,发送特定信息,就能够根据接收特定信息的时间,确定出两个相邻的辅助标识之间的代码运行所需要的时间。因此,本实施例提供的系统能够提高代码耗时检测的效率,而且更加准确。

本实施例提供的基于单条指令的代码耗时统计系统的具体原理和实现方式均与图1所示的实施例类似,此处不再赘述。

图4为本发明另一示例性实施例示出的基于单条指令的代码耗时统计系统的结构图。

如图4所示,在上述实施例的基础上,本实施例提供的基于单条指令的代码耗时统计系统,所述计算装置32,包括:

获取模块321,用于获取与第一辅助标记、第二辅助标记对应的第一特定信息、第二特定信息,其中,在所述指令代码中,所述第一辅助标记、所述第二辅助标记之间没有任何其他辅助标记;

计算单元322,用于计算发送所述第一特定信息与所述第二特定信息的时间差,并将所述时间差确定为所述第一辅助标记、所述第二辅助标记之间的所述部分代码的运行时间。

可选的,代码装置31还包括:

第一确定模块314,用于根据预设规则在所述辅助标记中确定目标辅助标记;

相应的,所述运行模块312具体用于:在运行所述指令代码的过程中,检测所述指令代码中的目标辅助标记;

相应的,所述发送模块313具体用于:

若检测到所述目标辅助标记,则发送与所述目标辅助标记对应的特定信息。

可选的,代码装置31还包括:

检测模块315,用于检测是否发送了所有所述辅助标记对应的所述特定信息,若否,则所述第一确定模块继续执行根据预设规则在所述辅助标记中确定目标辅助标记的步骤。

可选的,所述计算装置32还用于:

根据所述指令代码中包括的各所述部分代码的运行时间,确定所述指令代码的耗时分布情况。

本实施例提供的基于单条指令的代码耗时统计系统,可以针对两种应用场景提供不同的处理方法,在第一种应用场景中,能够缩短整个测试过程的时间,在第二种应用场景中,通过将辅助标记依次设置为目标辅助标记,并多次执行指令代码,能够使获得的时间数据更为准确。同时,本实施例提供的方案,能够根据需求调整辅助代码的位置,就能够对不同分割的指令部分代码耗时进行检测,无需对指令代码本身进行修改,因此,本实施例提供的方案的效率更高,在运用过程中也更加灵活。

本实施例提供的系统的具体原理和实现方式均与图2所示的实施例类似,此处不再赘述。

本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上所述的任一种方法。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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