keepMeasuring

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

Измерьте код с автоматическим закольцовыванием

Описание

пример

keepMeasuring(testcase) инструктирует среду тестирования для итерации через while цикл столько раз, сколько нужно, чтобы получить точное измерение эффективности.

Тесты эффективности, которые выполняются слишком быстро для MATLAB® ко времени точно фильтруются с отказом допущения. С keepMeasuring метод, среда тестирования может измерить значительно быстрее код путем автоматического определения количества раз для итерации через код и измерения средней эффективности.

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

keepMeasuring(testcase,label) помечает измерение label. Измерения, сгенерированные в том же тестовом методе и с той же меткой, накапливаются и суммируются. Метка добавляется в угловых скобках к имени тестового элемента в Samples и TestActivity свойства MeasurementResult объект.

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

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

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

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

Примеры

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

Создайте класс тестирования эффективности, ZerosTest. Этот параметризованный тест эффективности измеряет создание трех различных размеров массивов нулей.

classdef ZerosTest < matlab.perftest.TestCase
    properties (TestParameter)
        Size = {1e2,1e3,1e4};
    end
    
    methods(Test)
        function testOne(testCase,Size)
            A = zeros(Size);
        end
    end
end

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

results = runperf('ZerosTest');
Running ZerosTest
........
================================================================================
ZerosTest/testOne(Size=value1) was filtered.
    Test Diagnostic: The MeasuredTime should not be too close to the precision of the framework.
Details
================================================================================
.. ......
================================================================================
ZerosTest/testOne(Size=value2) was filtered.
    Test Diagnostic: The MeasuredTime should not be too close to the precision of the framework.
Details
================================================================================
.... ....
Done ZerosTest
__________

Failure Summary:

     Name                            Failed  Incomplete  Reason(s)
    =============================================================================
     ZerosTest/testOne(Size=value1)              X       Filtered by assumption.
    -----------------------------------------------------------------------------
     ZerosTest/testOne(Size=value2)              X       Filtered by assumption.

Чтобы получить точное измерение, измените ZerosTest класс, чтобы использовать keepMeasuring-while цикл. Среда тестирования эффективности измеряет код в keepMeasuring-while цикл.

classdef ZerosTest < matlab.perftest.TestCase
    properties (TestParameter)
        Size = {1e2,1e3,1e4};
    end
    
    methods(Test)
        function testOne(testCase,Size)
            while(testCase.keepMeasuring)
                A = zeros(Size);
            end
        end
    end
end

Повторите тест эффективности.

results = runperf('ZerosTest');
Running ZerosTest
.......... .......... ....
Done ZerosTest
__________
Введенный в R2018b