startMeasuring

Класс: testCase
Пакет: matlab.perftest

Обозначите начало контура измерения

Описание

пример

startMeasuring(testcase) определяет начало контура измерения. Активируйте этот метод и stopMeasuring метод ограничения измерений кодом между startMeasuring и stopMeasuring вызовы методов. Определение этого контура позволяет вам исключить из измерения код настройки, верификации и отключения.

Среда эффективности разрешает несколько неотключенных вызовов startMeasuring и stopMeasuring методы в каждом методе, который помечен Test атрибут. При создании ограниченных тестов эффективности имейте в виду следующее:

  • Метод тестирования, который вызывает startMeasuring метод должен вызвать stopMeasuring способ в объеме того же метода испытания.

  • Вызов на startMeasuring метод должен иметь последующий вызов stopMeasuring способ в объеме того же метода испытания. Аналогично, вызов stopMeasuring метод должен иметь предыдущий вызов для startMeasuring.

  • Вы не можете вызвать startMeasuring и stopMeasuring методы внутри while цикл, который имеет keepMeasuring способ в состоянии. Точно так же вы не можете иметь while цикл, который имеет keepMeasuring условие между вызовами в startMeasuring и stopMeasuring.

  • Если у тестового метода несколько вызовов для startMeasuring и stopMeasuring, затем среда эффективности накапливает и суммирует измерения.

Если среда сталкивается с неподдерживаемым использованием startMeasuring и stopMeasuring в тестовом методе помечает соответствующее MeasurementResult недопустимый образец.

пример

startMeasuring(testcase,label) определяет начало контура измерения и помечает измерение следующим образом label. Установка контура измерения с меткой аналогична установке границы без метки. Вызов startMeasuring с меткой должен быть последующий вызов stopMeasuring с той же меткой в области того же метода тестирования. Если метод тестирования имеет несколько контуры с одной и той же меткой, то среда эффективности накапливает измерения по меткам и вычисляет сумму. Среда эффективности не поддерживает вложенные контуры измерений.

Метка добавляется в угловых скобках к имени тестового элемента в Samples и TestActivity свойства MeasurementResult.

Входные параметры

расширить все

Образец теста, заданный как matlab.perftest.TestCase объект.

Метка контура измерения, заданная как допустимый идентификатор MATLAB. Допустимый идентификатор MATLAB является вектором символов или строковым скаляром алфавитно-цифровых формул (AZ, az, 09) и подчеркивания, такие что первый символ является буквой, а длина вектора символов меньше или равна namelengthmax.

Примеры

расширить все

Создайте класс тестирования эффективности, fprintfTest. Среда тестирования эффективности измеряет код между вызовами к startMeasuring и stopMeasuring методы. Этот контур ограничивает среду тестирования эффективности измерением только вызова fprintf функция. Это исключает действия настройки и отключения, а также проверку проверок.

classdef fprintfTest < matlab.perftest.TestCase
    methods(Test)
        function testPrintingToFile(testCase)
            file = tempname;
            fid = fopen(file, 'w');
            testCase.assertNotEqual(fid, -1, 'IO Problem');
            
            stringToWrite = repmat('abcdef', 1, 1000000);
            
            testCase.startMeasuring();
            fprintf(fid, '%s', stringToWrite);
            testCase.stopMeasuring();
            
            testCase.verifyEqual(fileread(file), stringToWrite);
            fclose(fid);
        end
    end
end

Создайте класс тестирования эффективности, fprintfTest2. Несколько контуры (вызовы startMeasuring и stopMeasuring) включить среду эффективности для измерения кода, который открывает файл, записывает в файл и закрывает файл.

classdef fprintfTest2 < matlab.perftest.TestCase
    methods(Test)
        function testPrintingToFile(testCase)
            file = tempname;
            
            testCase.startMeasuring();
            fid = fopen(file,'w');
            testCase.stopMeasuring();
            
            testCase.assertNotEqual(fid,-1,'IO Problem');
            stringToWrite = repmat('abcdef',1,1000000);
            
            testCase.startMeasuring();
            fprintf(fid,'%s',stringToWrite);
            testCase.stopMeasuring();
            
            testCase.verifyEqual(fileread(file),stringToWrite);
            
            testCase.startMeasuring();
            fclose(fid);
            testCase.stopMeasuring();
        end
    end
end

Запустите тест эффективности и просмотрите выборку сводных данных. Среда эффективности измеряла, что среднее время для открытия, записи и закрытия файла для testPrintingToFile тест составлял приблизительно 0,02 секунды. Ваши результаты могут варьироваться.

results = runperf('fprintfTest2');
T = sampleSummary(results)
Running fprintfTest2
........
Done fprintfTest2
__________


T =

  1×7 table

                 Name                  SampleSize      Mean      StandardDeviation      Min        Median       Max   
    _______________________________    __________    ________    _________________    ________    ________    ________

    fprintfTest2/testPrintingToFile        4         0.017003        0.0004943        0.016651    0.016814    0.017736

Создайте класс тестирования эффективности, examplePerfTest. Первый тест имеет маркированные контуры теста для генерации массива случайных чисел, измерения вызова на svd с одним выходом и измерением вызова на svd с несколькими выходами. Второй тест имеет немеченый контур вокруг вызова svd.

classdef examplePerfTest < matlab.perftest.TestCase
    methods(Test)
        function testSVD1(testCase)
            testCase.startMeasuring('arrayGen')
            X = rand(1000);
            testCase.stopMeasuring('arrayGen')
            
            testCase.startMeasuring('SVD_1out')
            S = svd(X);
            testCase.stopMeasuring('SVD_1out')
            
            testCase.startMeasuring("SVD_3out")
            [U2,S2,V2] = svd(X);
            testCase.stopMeasuring("SVD_3out")
            
            testCase.verifyEqual(S,diag(S2),'RelTol',1e-14)
        end
        
        function testSVD2(testCase)
            sz = 732;
            X = rand(sz);
            
            testCase.startMeasuring()
            [U,S,V] = svd(X);
            testCase.stopMeasuring()
            
            testCase.verifyTrue(isdiag(S))
            testCase.verifyTrue(issorted(diag(S),'descend'))
            testCase.verifySize(S,[sz sz 1])
        end
    end
end

Запустите тест эффективности и просмотрите выборку сводных данных. Ваши результаты могут варьироваться. Метки из testSVD1 заключаются в угловые скобки в имя тестового элемента в результатах.

results = runperf('examplePerfTest');
T = sampleSummary(results)
Running examplePerfTest
..........
..........
..........
..........
Done examplePerfTest
__________


T =

  4×7 table

                   Name                    SampleSize      Mean       StandardDeviation       Min        Median        Max   
    ___________________________________    __________    _________    _________________    _________    _________    ________

    examplePerfTest/testSVD1 <arrayGen>        21        0.0096508        0.0012428        0.0087596    0.0092564    0.013911
    examplePerfTest/testSVD1 <SVD_1out>        21          0.11978        0.0098172          0.10585      0.12274     0.13575
    examplePerfTest/testSVD1 <SVD_3out>        21          0.30664         0.020991          0.26882       0.3051     0.35018
    examplePerfTest/testSVD2                   11          0.13294         0.011135          0.11127      0.13557     0.15162
Введенный в R2016a