keepMeasuring

Класс: matlab.perftest.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 является вектором символов или скаляром строки буквенно-цифрового индикатора (AZAZ, 0–9) и символы нижнего подчеркивания, такие, что первый символ является буквой и длиной вектора символов, меньше чем или равны 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