CN107480043A - 代码运行时间的测试方法及系统 - Google Patents
代码运行时间的测试方法及系统 Download PDFInfo
- Publication number
- CN107480043A CN107480043A CN201611205500.4A CN201611205500A CN107480043A CN 107480043 A CN107480043 A CN 107480043A CN 201611205500 A CN201611205500 A CN 201611205500A CN 107480043 A CN107480043 A CN 107480043A
- Authority
- CN
- China
- Prior art keywords
- global variable
- measured
- value
- run time
- code segment
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种代码运行时间的测试方法及系统,该方法包括:运行程序并通过定时器开始计时;获取第一全局变量的值和第二全局变量的值,其中,第一全局变量和第二全局变量分别位于程序中待测代码段的起始位置和结束位置,第一全局变量和第二全局变量用于记录定时器时间;根据定时器的采样精度、第一全局变量的值和第二全局变量的值确定待测代码段的第一运行时间。本发明的代码运行时间的测试方法的代码运行时间测试准确、可靠,且该方法具有简单、方便且测试效率高的优点。
Description
技术领域
本发明涉及汽车技术领域,特别涉及一种代码运行时间的测试方法及系统。
背景技术
相关技术中,对于代码运行时间的测试采用的技术手段通常是采用硬件输出端口来检测一段程序执行的时间,找出一个程序中一个硬件输出端口,在测试的代码的开始将该输出端口置高(低),在该段代码的结束将该端口置与开始相反的电平低(高),通过示波器采集,测量该端口从高到低的时间,测试多组值取平均值。该方法在测试上需要使用示波器进行采集,额外的增加示波器使得该种方式并不方便。另外,由于示波器的精度会有误差,影响代码运行时间测量结果的可靠性。
发明内容
本发明旨在至少在一定程度上解决上述相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种代码运行时间的测试方法。该方法的代码运行时间测试准确、可靠,且该方法具有简单、方便且测试效率高的优点。
本发明的另一个目的在于提出一种代码运行时间的测试系统。
为了实现上述目的,本发明的第一方面的实施例公开了一种代码运行时间的测试方法,包括以下步骤:运行程序并通过定时器开始计时;获取第一全局变量的值和第二全局变量的值,其中,所述第一全局变量和所述第二全局变量分别位于程序中待测代码段的起始位置和结束位置,所述第一全局变量和第二全局变量用于记录定时器时间;根据所述定时器的采样精度、所述第一全局变量的值和所述第二全局变量的值确定所述待测代码段的第一运行时间。
根据本发明实施例的代码运行时间的测试方法,采用定时器作为计时工具,通过预先定义的两个全局变量,分别在待测代码段的运行的开始添加变量其中一个全局变量和结束添加另一个全局变量,程序运行结束,根据两个全局变量的值便可以得出程序的运行时间,该方法测试时间准确性高的优点,另外,不需要额外的测量工具和测量仪器参与,具有简单、方便的优点。
另外,根据本发明上述实施例的代码运行时间的测试方法还可以具有如下附加的技术特征:
在一些示例中,还包括:重复运行所述程序,以得到多个所述待测代码段的第一运行时间;对所述多个待测代码段的第一运行时间取平均值,并将所述平均值作为所述待测代码段的最终运行时间。
在一些示例中,还包括:连续循环地运行所述待测代码段两次;并根据先后两次得到的第一全局变量的值确定所述待测代码段的第二运行时间;根据所述第二运行时间对所述第一运行时间进行检验。
在一些示例中,还包括:定义所述第一全局变量和所述第二全局变量;将所述第一全局变量添加到所述待测代码段的起始位置,并将所述第二全局变量添加到所述待测代码段的结束位置。
在一些示例中,通过如下公式确定所述待测代码段的第一运行时间,所述公式为:
T=(COUNT2-COUNT1)*1000/(M),
其中,所述T为所述第一运行时间,所述COUNT1为所述第一全局变量,所述COUNT2为所述第二全局变量,所述M为所述定时器的采样精度,所述定时器的采样精度M的单位为毫秒。
本发明第二方面的实施例公开了一种代码运行时间的测试系统,包括:运行模块,用于运行程序并通过定时器开始计时;获取模块,用于获取第一全局变量的值和第二全局变量的值,其中,所述第一全局变量和所述第二全局变量分别位于程序中待测代码段的起始位置和结束位置,所述第一全局变量和第二全局变量用于记录定时器时间;测试模块,用于根据所述定时器的采样精度、所述第一全局变量的值和所述第二全局变量的值确定所述待测代码段的第一运行时间。
根据本发明实施例的代码运行时间的测试系统,采用定时器作为计时工具,通过预先定义的两个全局变量,分别在待测代码段的运行的开始添加变量其中一个全局变量和结束添加另一个全局变量,程序运行结束,根据两个全局变量的值便可以得出程序的运行时间,该系统测试时间准确性高的优点,另外,不需要额外的测量工具和测量仪器参与,具有简单、方便的优点
另外,根据本发明上述实施例的代码运行时间的测试系统还可以具有如下附加的技术特征:
在一些示例中,所述运行模块还用于重复运行所述程序,所述测试模块还用于对所述多个待测代码段的第一运行时间取平均值,并将所述平均值作为所述待测代码段的最终运行时间。
在一些示例中,所述运行模块还用于连续循环地运行所述待测代码段两次,所述测试模块还用于根据先后两次得到的第一全局变量的值确定所述待测代码段的第二运行时间,并根据所述第二运行时间对所述第一运行时间进行检验。
在一些示例中,还包括:定义模块,用于定义所述第一全局变量和所述第二全局变量;添加模块,用于将所述第一全局变量添加到所述待测代码段的起始位置,并将所述第二全局变量添加到所述待测代码段的结束位置。
在一些示例中,所述测试模块通过如下公式确定所述待测代码段的第一运行时间,所述公式为:
T=(COUNT2-COUNT1)*1000/(M),
其中,所述T为所述第一运行时间,所述COUNT1为所述第一全局变量,所述COUNT2为所述第二全局变量,所述M为所述定时器的采样精度,所述定时器的采样精度M的单位为毫秒。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述的或附加的方面和优点结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是根据本发明一个实施例的代码运行时间的测试方法的流程图;
图2是根据本发明另一个实施例的代码运行时间的测试方法的流程图;以及
图3是根据本发明一个实施例的代码运行时间的测试系统的结构框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
以下结合附图描述根据本发明实施例的代码运行时间的测试方法及系统。
图1是根据本发明一个实施例的代码运行时间的测试方法的流程图。如图1所示,并结合图2,根据本发明一个实施例的代码运行时间的测试方法,包括如下步骤:
S101:运行程序并通过定时器开始计时。
其中,在运行程序之前,首先定义第一全局变量和第二全局变量,并将第一全局变量添加到待测代码段的起始位置,并将第二全局变量添加到待测代码段的结束位置,第一全局变量和第二全局变量用于记录定时器时间。第一全局变量记为COUNT1,第二全局变量记为COUNT2。
在本发明的一个实施例中,定时器采用精度为120M的定时器。
S102:获取第一全局变量的值和第二全局变量的值,其中,第一全局变量和第二全局变量分别位于程序中待测代码段的起始位置和结束位置,第一全局变量和第二全局变量用于记录定时器时间。
待测代码段以10毫秒程序为例,则分别在10毫秒程序运行的开始添加变量COUNT1和结束添加变量COUNT2,然后连接调试器进行调试,程序运行结束,可以采集到程序前后的这两个变量的值,即COUNT1的值和COUNT2的值。
S103:根据定时器的采样精度、第一全局变量的值和第二全局变量的值确定待测代码段的第一运行时间。
具体地说,可以通过如下公式确定待测代码段(如10毫秒程序)的第一运行时间,该公式为:
T=(COUNT2-COUNT1)*1000/(M),
其中,T为第一运行时间,COUNT1为第一全局变量,COUNT2为第二全局变量,M为定时器的采样精度。其中,定时器的采样精度M的单位为毫秒,例如定时器的采样精度M为120毫秒。
以120M的采样精度的定时器为例,则10毫秒程序的运行时间=(COUNT2-COUNT1)*1000/(120000000),在该示例中,运行时间的单位为毫秒。
结合图2所示,程序为车辆中某个控制器的驱动程序,则控制器开始运行,进入main()函数后,定时器开始计时,已进入10ms循环开始就会有一个定时器的时间,此时把它记为COUNT1,知道10ms循环中调用完一个循环所需要的函数后,定时器也会有相应的计时,此时把它记为COUNT2。这样COUNT1和COUNT2之间的时间差,并考虑定时器的采样精度后,得到10ms循环运行的全部时间(即:第一运行时间)。
为了使测试得到的运行时间更为准确可靠,可以重复执行多次程序,并将多次运行得到的运行时间取平均值后作为最终的运行时间。即:重复运行程序,以得到多个待测代码段的第一运行时间;对多个待测代码段的第一运行时间取平均值,并将平均值作为待测代码段的最终运行时间。也就是说,如此循环多次测试得到结果取平均值,可以方便的实用本发明实施例的方法来测试函数或者10ms程序循环的所有执行时间。
进一步地,在使用该方法的同时,也可以检测该方法的可行性,例如使用以下方式检测该方法的可行性:
如图2所示,连续循环地运行待测代码段两次;并根据先后两次得到的第一全局变量的值确定待测代码段的第二运行时间;根据第二运行时间对第一运行时间进行检验。具体而言,在代码中的10ms程序的计时是采用精准的定时器来实现的,实用上述方法来检测整体10ms程序循环的时间的精准性来验证该方法的可行性。此方法同上述方法类似,也是采用定时器的方式来记录进入10ms程序的时间,只是这次需要记录两次无间隔进入10ms程序的开始的时间值,用第二次记录值减去第一次进入时记录值的时间差,就是10ms程序整体的设定值,从而验证了该方法的可行性。
根据本发明实施例的代码运行时间的测试方法,采用定时器作为计时工具,通过预先定义的两个全局变量,分别在待测代码段的运行的开始添加变量其中一个全局变量和结束添加另一个全局变量,程序运行结束,根据两个全局变量的值便可以得出程序的运行时间,该方法测试时间准确性高的优点,另外,不需要额外的测量工具和测量仪器参与,具有简单、方便的优点。
图3是根据本发明一个实施例的代码运行时间的测试系统的结构框图。如图3所示,根据本发明一个实施例的代码运行时间的测试系统300,包括:运行模块310、获取模块320和测试模块330。
其中,运行模块310用于运行程序并通过定时器开始计时。获取模块320用于获取第一全局变量的值和第二全局变量的值,其中,所述第一全局变量和所述第二全局变量分别位于程序中待测代码段的起始位置和结束位置,所述第一全局变量和第二全局变量用于记录定时器时间。测试模块330用于根据所述定时器的采样精度、所述第一全局变量的值和所述第二全局变量的值确定所述待测代码段的第一运行时间。
在本发明的一个实施例中,运行模块310还用于重复运行所述程序,所述测试模块330还用于对所述多个待测代码段的第一运行时间取平均值,并将所述平均值作为所述待测代码段的最终运行时间。
在本发明的一个实施例中,所述运行模块310还用于连续循环地运行所述待测代码段两次,所述测试模块330还用于根据先后两次得到的第一全局变量的值确定所述待测代码段的第二运行时间,并根据所述第二运行时间对所述第一运行时间进行检验。
在本发明的一个实施例中,还包括:定义模块和添加模块(图3中没有示出),定义模块用于定义所述第一全局变量和所述第二全局变量。添加模块用于将所述第一全局变量添加到所述待测代码段的起始位置,并将所述第二全局变量添加到所述待测代码段的结束位置。
在本发明的一个实施例中,测试模块330通过如下公式确定所述待测代码段的第一运行时间,所述公式为:
T=(COUNT2-COUNT1)*1000/(M),
其中,所述T为所述第一运行时间,所述COUNT1为所述第一全局变量,所述COUNT2为所述第二全局变量,所述M为所述定时器的采样精度。其中,定时器的采样精度M的单位为毫秒,例如定时器的采样精度M为120毫秒。
根据本发明实施例的代码运行时间的测试系统,采用定时器作为计时工具,通过预先定义的两个全局变量,分别在待测代码段的运行的开始添加变量其中一个全局变量和结束添加另一个全局变量,程序运行结束,根据两个全局变量的值便可以得出程序的运行时间,该系统测试时间准确性高的优点,另外,不需要额外的测量工具和测量仪器参与,具有简单、方便的优点。
需要说明的是,本发明实施例的代码运行时间的测试系统的具体实现方式与本发明实施例的代码运行时间的测试方法的具体实现方式类似,具体请参见方法部分的描述,为了减少冗余,此处不做赘述。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不是必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (8)
1.一种代码运行时间的测试方法,其特征在于,包括以下步骤:
运行程序并通过定时器开始计时;
获取第一全局变量的值和第二全局变量的值,其中,所述第一全局变量和所述第二全局变量分别位于程序中待测代码段的起始位置和结束位置,所述第一全局变量和第二全局变量用于记录定时器时间;
根据所述定时器的采样精度、所述第一全局变量的值和所述第二全局变量的值确定所述待测代码段的第一运行时间。
2.根据权利要求1所述的代码运行时间的测试方法,其特征在于,还包括:
重复运行所述程序,以得到多个所述待测代码段的第一运行时间;
对所述多个待测代码段的第一运行时间取平均值,并将所述平均值作为所述待测代码段的最终运行时间。
3.根据权利要求1所述的代码运行时间的测试方法,其特征在于,还包括:
连续循环地运行所述待测代码段两次;
并根据先后两次得到的第一全局变量的值确定所述待测代码段的第二运行时间;
根据所述第二运行时间对所述第一运行时间进行检验。
4.根据权利要求1-3任一项所述的代码运行时间的测试方法,其特征在于,通过如下公式确定所述待测代码段的第一运行时间,所述公式为:
T=(COUNT2-COUNT1)*1000/(M),
其中,所述T为所述第一运行时间,所述COUNT1为所述第一全局变量,所述COUNT2为所述第二全局变量,所述M为所述定时器的采样精度,所述定时器的采样精度M的单位为毫秒。
5.一种代码运行时间的测试系统,其特征在于,包括:
运行模块,用于运行程序并通过定时器开始计时;
获取模块,用于获取第一全局变量的值和第二全局变量的值,其中,所述第一全局变量和所述第二全局变量分别位于程序中待测代码段的起始位置和结束位置,所述第一全局变量和第二全局变量用于记录定时器时间;
测试模块,用于根据所述定时器的采样精度、所述第一全局变量的值和所述第二全局变量的值确定所述待测代码段的第一运行时间。
6.根据权利要求5所述的代码运行时间的测试系统,其特征在于,所述运行模块还用于重复运行所述程序,所述测试模块还用于对所述多个待测代码段的第一运行时间取平均值,并将所述平均值作为所述待测代码段的最终运行时间。
7.根据权利要求5所述的代码运行时间的测试系统,其特征在于,所述运行模块还用于连续循环地运行所述待测代码段两次,所述测试模块还用于根据先后两次得到的第一全局变量的值确定所述待测代码段的第二运行时间,并根据所述第二运行时间对所述第一运行时间进行检验。
8.根据权利要求5-7任一项所述的代码运行时间的测试系统,其特征在于,所述测试模块通过如下公式确定所述待测代码段的第一运行时间,所述公式为:
T=(COUNT2-COUNT1)*1000/(M),
其中,所述T为所述第一运行时间,所述COUNT1为所述第一全局变量,所述COUNT2为所述第二全局变量,所述M为所述定时器的采样精度,所述定时器的采样精度M的单位为毫秒。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611205500.4A CN107480043A (zh) | 2016-12-23 | 2016-12-23 | 代码运行时间的测试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611205500.4A CN107480043A (zh) | 2016-12-23 | 2016-12-23 | 代码运行时间的测试方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107480043A true CN107480043A (zh) | 2017-12-15 |
Family
ID=60593881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611205500.4A Pending CN107480043A (zh) | 2016-12-23 | 2016-12-23 | 代码运行时间的测试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107480043A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112083931A (zh) * | 2020-09-15 | 2020-12-15 | 上海眼控科技股份有限公司 | 程序处理方法、装置及设备 |
CN113268242A (zh) * | 2020-02-17 | 2021-08-17 | 北京达佳互联信息技术有限公司 | 代码编译时长确定方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005041041A3 (de) * | 2003-10-23 | 2006-02-16 | Siemens Ag | Verfahren und anordnung zur laufzeitmessung von funktionen |
CN101226500A (zh) * | 2008-02-18 | 2008-07-23 | 中兴通讯股份有限公司 | 借用中央处理单元定时器精确测量程序运行时间的方法 |
CN101320416A (zh) * | 2008-05-20 | 2008-12-10 | 北京深思洛克数据保护中心 | 一种检测软件处于调试状态的方法和系统 |
CN102609393A (zh) * | 2012-02-08 | 2012-07-25 | 浪潮(北京)电子信息产业有限公司 | 一种线性方程组的数据处理方法及装置 |
-
2016
- 2016-12-23 CN CN201611205500.4A patent/CN107480043A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005041041A3 (de) * | 2003-10-23 | 2006-02-16 | Siemens Ag | Verfahren und anordnung zur laufzeitmessung von funktionen |
CN101226500A (zh) * | 2008-02-18 | 2008-07-23 | 中兴通讯股份有限公司 | 借用中央处理单元定时器精确测量程序运行时间的方法 |
CN101320416A (zh) * | 2008-05-20 | 2008-12-10 | 北京深思洛克数据保护中心 | 一种检测软件处于调试状态的方法和系统 |
CN102609393A (zh) * | 2012-02-08 | 2012-07-25 | 浪潮(北京)电子信息产业有限公司 | 一种线性方程组的数据处理方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268242A (zh) * | 2020-02-17 | 2021-08-17 | 北京达佳互联信息技术有限公司 | 代码编译时长确定方法、装置、电子设备和存储介质 |
CN112083931A (zh) * | 2020-09-15 | 2020-12-15 | 上海眼控科技股份有限公司 | 程序处理方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109239360B (zh) | 一种反应曲线异常检测方法及装置 | |
JP5430816B2 (ja) | デューティサイクルを測定する方法 | |
JP4236104B2 (ja) | 制御ユニットのためのソフトウェア検証方法及び検証システム | |
CN101819252A (zh) | 一种模拟电路故障诊断方法 | |
CN105911512A (zh) | 一种智能电能表常数试验系统及试验方法 | |
JP5577035B2 (ja) | ローカルに順序付けられたストロービング | |
CN106441632A (zh) | 一种温度计的检测方法及温度计的检测装置 | |
CN107480043A (zh) | 代码运行时间的测试方法及系统 | |
CN116955027B (zh) | 一种mcu芯片测试系统及其测试方法 | |
US20170060727A1 (en) | Breaking code execution based on time consumption | |
US9244126B2 (en) | Automated test system with event detection capability | |
CN111373257B (zh) | 测试气体传感器的方法和测试装置以及由气体传感器和测试装置构成的系统 | |
US7027946B2 (en) | Broadside compare with retest on fail | |
CN106712922A (zh) | 一种高精度时钟信号测试系统及方法 | |
CN106092341B (zh) | 一种智能温度传感器系统 | |
CN106841982B (zh) | 一种集成电路测试系统总定时准确度测量装置和方法 | |
CN208547562U (zh) | 一种光学检测设备 | |
CN106442712B (zh) | 一种自动校准涡流检测灵敏度的装置及方法 | |
CN110688297A (zh) | 一种针对计算逻辑组态的自动化测试方法 | |
CN108955984B (zh) | 一种可直接指示方向的主应力方向判定方法 | |
CN113447045B (zh) | 一种惯性系统精度可靠度分析方法及系统 | |
KR100811666B1 (ko) | 테스터 | |
US11281179B2 (en) | Tracing apparatus | |
CN102486629B (zh) | 一种硬件板卡周期运行时间的测试方法 | |
CN107765171A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171215 |
|
RJ01 | Rejection of invention patent application after publication |