keepMeasuring

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

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

Описание

пример

keepMeasuring(testcase) дает среде тестирования команду выполнять итерации через a 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