exponenta event banner

keepMeasuring

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

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

Описание

пример

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