keepMeasuring

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

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

Синтаксис

keepMeasuring(testcase)
keepMeasuring(testcase,label)

Описание

пример

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

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

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

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

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

развернуть все

Экземпляр теста, заданного как matlab.perftest.TestCase Объект 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

Была ли эта тема полезной?