文档

runperf

运行一组用于性能度量的测试

语法

结果= runperf
结果= runperf(测试)
results = runperf(测试,名称,值)

描述

结果= runperf运行当前文件夹中的所有测试以进行性能测量,并返回数组MeasurementResult对象。每一个元素结果对应于测试套件中的一个元素。

性能测试框架使用可变数量的测量来运行测试,以达到在0.95置信水平内具有0.05相对误差范围的样本平均值。它运行四次测试来预热代码,然后运行4到32次来收集满足统计目标的测量值。如果在32次测试运行后,样本均值未达到0.95置信水平内的0.05相对误差范围,则性能测试框架将停止运行测试并显示警告。在这种情况下,MeasurementResult对象包含4次热身运行和32次测量运行的信息。

runperf函数提供了一种简单的方法来运行测试集合作为性能实验。

例子

结果= runperf(测试运行一组指定的测试。

例子

结果= runperf(测试名称,值运行一组带有一个或多个指定的附加选项的测试名称,值对参数。

例子

全部折叠

在您当前的工作文件夹中,创建一个基于脚本的测试,onesTest.m,它使用三种不同的方法来初始化a1000年x15001的矩阵。

行数= 1000;Cols = 1500;%% Ones命令功能X = ones(rows,cols);没有预分配的%%循环分配R = 1:行数c = 1: colorx (r,c) = 1;结束结束%%带预分配的循环赋值X = 0 (rows,cols);R = 1:行数c = 1: colorx (r,c) = 1;结束结束

将脚本作为性能测试运行。你的结果可能会有所不同。

结果= runperf(“诚实”);
诚实的运行  .......... .......... .......... ......警告:在运行onesTest/OnesFunction的MaxSamples后,目标相对误差范围未满足。.... .......... .......... .......... ....完成一次测试__________

在示例输出中,运行了性能测试框架OnesFunction测试最大次数,但在0.95的置信水平上没有达到0.05的相对误差范围。

显示结果。的结果变量是a1 x3 MeasurementResult数组中。中的代码节中定义的一个测试对应于数组中的每个元素onesTest.m

结果
结果= 1x3测量结果数组与属性:名称有效样本TestActivity总数:3有效,0无效。

显示第二个测试的测量结果,该测试循环分配而不进行预分配。

结果(2)
ans = MeasurementResult with properties: Name: 'onesTest/LoopAssignmentWithoutPreallocation' Valid: 1 Samples: [4x7 table] TestActivity: [8x12 table]合计:1 Valid, 0 Invalid。

显示完整的测试测量表。

(2)结果。TestActivity
ans =名字传递失败不完整MeasuredTime客观时间戳主机平台版本TestResult RunIdentifier  ___________________________________________ ______ ______ __________ ____________ _________ ____________________ ___________ ________ _____________________ ________________________________ ____________________________________ 诚实/ LoopAssignmentWithoutPreallocation真的假假0.42843热身29 - 12月- 2015 15:26:46 MY-HOSTNAME win64 9.0.0.320924 (R2016a) [1 x1 matlab.unittest。TestResult] 03232d6b-d0b7-4ab5-b4b1-5aa5061336b4 onesTest/LoopAssignmentWithoutPreallocation true false false 0.38467 warmup 29-Dec-2015 15:26:46 MY-HOSTNAME win64 9.0.0.320924 (R2016a) [1x1 matlab.unittest. net]TestResult] 03232d6b-d0b7-4ab5-b4b1-5aa5061336b4 onesTest/LoopAssignmentWithoutPreallocation true false false 0.34094 warmup 29-Dec-2015 15:26:46 MY-HOSTNAME win64 9.0.0.320924 (R2016a) [1x1 matlab.unittest. net]TestResult] 03232d6b-d0b7-4ab5-b4b1-5aa5061336b4 onesTest/LoopAssignmentWithoutPreallocation true false false 0.34076 warmup 29-Dec-2015 15:26:47 MY-HOSTNAME win64 9.0.0.320924 (R2016a) [1x1 matlab.unittest. net]TestResult] 03232d6b-d0b7-4ab5-b4b1-5aa5061336b4 onesTest/LoopAssignmentWithoutPreallocation true false false 0.36286 sample 29-Dec-2015 15:26:47 MY-HOSTNAME win64 9.0.0.320924 (R2016a) [1x1 matlab.unittest. net]TestResult] 03232d6b-d0b7-4ab5-b4b1-5aa5061336b4 onesTest/LoopAssignmentWithoutPreallocation true false false 0.39701 sample 29-Dec-2015 15:26:48 MY-HOSTNAME win64 9.0.0.320924 (R2016a) [1x1 matlab.unittest. net]TestResult] 03232d6b-d0b7-4ab5-b4b1-5aa5061336b4 onesTest/LoopAssignmentWithoutPreallocation true false false 0.38368 sample 29-Dec-2015 15:26:48 MY-HOSTNAME win64 9.0.0.320924 (R2016a) [1x1 matlab.unittest. net]TestResult] 03232d6b-d0b7-4ab5-b4b1-5aa5061336b4 onesTest/LoopAssignmentWithoutPreallocation true false false 0.39277 sample 29-Dec-2015 15:26:48 MY-HOSTNAME win64 9.0.0.320924 (R2016a) [1x1 matlab.unittest. net]TestResult] 03232 d6b-d0b7-4ab5-b4b1-5aa5061336b4

性能测试框架运行了四次预热运行,随后进行了四次测量运行(表示为样本客观的列)。

显示第二次测试的平均测量时间。要排除在热身运行中收集的数据,请使用样品字段。

(2) .Samples.MeasuredTime意味着(结果)
Ans = 0.3841

要比较脚本中的不同初始化方法,请显示所有测试的平均测量时间。中的值连接起来样品的三个元素之间的字段结果数组中。然后使用varfun按名称对表项进行分组并计算平均值。

fullTable = vertcat(results.Samples);varfun (@mean fullTable,“数据源”“MeasuredTime”“GroupingVariables”“名字”
ans =名字GroupCount mean_MeasuredTime  ___________________________________________ __________ _________________ 诚实/ OnesFunction 32 0.0031614诚实/ LoopAssignmentWithoutPreallocation 4 0.38408诚实/ LoopAssignmentWithPreallocation 26 0.016025

在示例输出中,函数是将矩阵初始化为1的最快方法。性能测试框架为此测试进行了32次测量运行。你的结果可能会有所不同。

在当前工作文件夹中,创建一个基于类的测试,preallocationTest.m,比较了不同的预分配方法。

classdefpreallocationTest < matlab.perftest.TestCase方法(测试)函数teststones (testCase) x = ones(1,17);结束函数testIndexingWithVariable(testCase) id = 1:17 e7;X (id) = 1;结束函数testIndexingOnLHS(testCase) x(1:17 e7) = 1;结束函数testForLoop (testCase)x(I) =1;结束结束结束结束

的测量边界preallocationTest类是测试方法。每个测试方法的时间度量包括方法中的所有代码。有关指定度量边界的信息,请参阅startMeasuringstopMeasuring的方法matlab.perftest.TestCase

为包含的所有元素运行性能测试“索引”在名字里。您的结果可能会有所不同,并且您可能会看到警告runperf不符合统计目标。

结果= runperf(“preallocationTest”“名字”索引‘* *’
运行preallocationTest  .......... .......... .......... .......... ..完成preallocationTest __________结果= 1x2测量结果数组与属性:名称有效样本TestActivity总数:2有效,0无效。

显示每个测试的平均测量时间。中的值连接起来样品的两个元素之间的字段结果数组中。然后使用varfun按名称对表项进行分组并计算平均值。

fullTable = vertcat(results.Samples);varfun (@mean fullTable,“数据源”“MeasuredTime”“GroupingVariables”“名字”
ans =名字GroupCount mean_MeasuredTime  __________________________________________ __________ _________________ preallocationTest / testIndexingWithVariable 4 0.16637 preallocationTest / testIndexingOnLHS 30 0.076792

输入参数

全部折叠

指定为字符向量或字符向量单元数组的一组测试。单元格数组中的每个字符向量可以包含一个测试文件的名称、一个测试类、一个测试套件元素名称、一个包含测试类的包,或者一个包含测试文件的文件夹。

例子:runperf(“ATestFile.m”)

例子:runperf(“ATestFile / aTest”)

例子:runperf(“mypackage.MyTestClass”)

例子:runperf (pwd)

例子:runperf ({pwd‘mypackage.MyTestClass’,‘ATestFile.m’,‘mypackage.subpackage})

名称-值对参数

指定可选的逗号分隔对名称,值参数。名字是参数名和吗价值是对应的值。名字必须出现在单引号内(' ')。可以以任意顺序指定多个名称和值对参数,如Name1, Value1,…,的家

例子:runperf(测试,“名字”,“productA_ *”)运行名称以开头的测试元素“productA_”

全部折叠

包含定义测试类、函数或脚本的文件的基本文件夹的名称,指定为字符向量。这个参数过滤了TestSuite数组元素。对于要包含在套件中的测试元素,测试元素必须包含在指定的基本文件夹中。使用通配符*匹配任意数量的字符。使用问号字符匹配单个字符。对于包中定义的测试文件,基本文件夹是顶级包文件夹的父文件夹。

在子文件夹中运行测试的指示符,指定为真正的01)。默认情况下,框架在指定文件夹中运行测试,但不在其子文件夹中运行测试。

数据类型:逻辑

在子包中运行测试的指示器,指定为真正的01)。默认情况下,框架在指定的包中运行测试,而不是在其子包中运行测试。

数据类型:逻辑

套件元素的名称,指定为字符向量。这个参数过滤了TestSuite数组元素。对于要运行测试的测试框架名字属性必须与指定的名称匹配。使用通配符,*,以匹配任意数量的字符。使用问号字符,,以匹配单个字符。

测试套件元素使用的参数名称,指定为字符向量。这个参数过滤了TestSuite数组元素。使用通配符*匹配任意数量的字符。使用问号字符匹配单个字符。

测试套件元素使用的参数化属性的名称,指定为字符向量。这个参数过滤了TestSuite数组元素。使用通配符*匹配任意数量的字符。使用问号字符匹配单个字符。

测试程序的名称,指定为字符向量。这个参数过滤了TestSuite数组元素。使用通配符,*,以匹配任意数量的字符。使用问号字符,,以精确匹配一个字符。

在班级考试中ProcedureName是测试方法的名称。在基于函数的情况下,test是包含测试的本地函数的名称。在基于脚本的测试中,它是从测试部分标题生成的名称。不像名字,测试过程的名称不包括任何类或包名称或有关参数化的信息。

测试类派生的类的名称,指定为字符向量或字符串标量。这个参数过滤了TestSuite数组元素。

测试元素标签的名称,指定为字符向量或字符串标量。这个参数过滤了TestSuite数组元素。使用通配符*匹配任意数量的字符。使用问号字符匹配单个字符。

提示

  • 要自定义性能测试的统计目标,请使用TimeExperiment类来构造和运行性能测试。

选择

要显式地创建测试套件,您可以使用testsuite函数或matlab.unittest.TestSuite创建套件的方法。方法运行性能测试运行您指定的方法TimeExperiment

在R2016a中引入

这个话题有帮助吗?