comparisonPlot

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

Создайте график, чтобы сравнить результаты базовых и измерительных тестов

Описание

пример

comparisonPlot(Baseline,Measurement) создает график, который визуально сравнивает каждую TimeResult объект в массивах Baseline и Measurement. Сравнение основано на минимуме времени измерения выборки.

пример

comparisonPlot(Baseline,Measurement,stat) задает статистическую величину, применяемую к временам выборочных измерений каждого TimeResult объект в Baseline и Measurement.

пример

comparisonPlot(___,Name,Value) создает график сравнения с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар. Для примера, comparisonPlot(Baseline,Measurement,'Scale','linear') создает график с линейной шкалой для x - и y - осей.

пример

cp = comparisonPlot(___) возвращает ComparisonPlot объект, заданный как образец matlab.unittest.measurement.chart.ComparisonPlot класс. Использование cp изменение свойств определенного графика сравнения после его создания.

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

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

Результаты выполнения первичного временного эксперимента на тестовом наборе, заданные как TimeResult массив. Baseline должны иметь ту же длину, что и Measurement.

Результаты выполнения вторичного временного эксперимента на тестовом наборе, заданные как TimeResult массив. Measurement должны иметь ту же длину, что и Baseline.

Статистическая величина, применяемая к шагам измерения выборки каждого TimeResult объект в Baseline и Measurement, заданный как 'min', 'max', 'mean', или 'median'.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: cp = comparisonPlot(Baseline,Measurement,'SimilarityTolerance',0.05,'Scale','linear')

Шкала x - и y - осей ComparisonPlot объект, заданный как 'log' или 'linear'.

Допустимое отклонение коэффициента статистики от единицы для пары аналогичных тестов эффективности, заданное как числовое значение между 0 и 1.

SimilarityTolerance задает границы заштрихованной области на графике сравнения. Точки данных, которые попадают в эту область, представляют сходные Baseline и Measurement записи.

Родительский контейнер, в котором можно построить график, заданный как Figure объект, созданный с помощью figure или uifigure function, a Panel объект, созданный с помощью uipanel функции, или Tab объект, созданный с помощью uitab функция.

Примеры

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

Визуализируйте вычислительную сложность двух алгоритмов сортировки, сортируйте пузырьки и объединяйте сортировку, которые сортируют элементы списка в порядке возрастания. Сортировка Bubble - это простой алгоритм сортировки, который неоднократно проходит по списку, сравнивает соседние пары элементов и меняет элементы, если они находятся в неправильном порядке. Сортировка слиянием является алгоритмом «разделения и завоевания», который использует простоту слияния отсортированных подсписков в новый отсортированный список.

В текущей папке сохраните следующий код в bubbleSort.m.

function y = bubbleSort(x)
% Sorting algorithm with O(n^2) complexity
n = length(x);
swapped = true;

while swapped
    swapped = false;
    for i = 2:n
        if x(i-1) > x(i)
            temp = x(i-1);
            x(i-1) = x(i);
            x(i) = temp;
            swapped = true;
        end
    end
end

y=x;
end

Сохраните следующий код в mergeSort.m.

function y = mergeSort(x)
% Sorting algorithm with O(n*logn) complexity
y = x; % A list of one element is considered sorted

if length(x) > 1
    mid = floor(length(x)/2);
    L = x(1:mid);
    R = x((mid+1):end);
    
    % Sort left and right sublists recursively
    L = mergeSort(L);
    R = mergeSort(R);
    
    % Merge the sorted left (L) and right (R) sublists
    i = 1;
    j = 1;
    k = 1;
    while i <= length(L) && j <= length(R)
        if L(i) < R(j)
            y(k) = L(i);
            i = i + 1;
        else
            y(k) = R(j);
            j = j + 1;
        end
        k = k + 1;
    end
    
    % At this point, either L or R is empty
    while i <= length(L)
        y(k) = L(i);
        i = i + 1;
        k = k + 1;
    end
    
    while j <= length(R)
        y(k) = R(j);
        j = j + 1;
        k = k + 1;
    end
end

end

Создайте следующий параметризованный класс теста, TestSort, который сравнивает эффективность алгоритмов сортировки и слияния пузырьков. The len свойство содержит количество элементов списка, которые необходимо протестировать.

classdef TestSort < matlab.perftest.TestCase
    properties
        Data
        SortedData
    end
    
    properties(ClassSetupParameter)
        % Create 25 logarithmically spaced values between 10^2 and 10^4
        len = num2cell(round(logspace(2,4,25)));
    end
    
    methods(TestClassSetup)
        function ClassSetup(testCase,len)
            orig = rng;
            testCase.addTeardown(@rng,orig)
            rng('default')
            testCase.Data = rand(1,len);
            testCase.SortedData = sort(testCase.Data);
        end
    end
    
    methods(Test)
        function testBubbleSort(testCase)
            while testCase.keepMeasuring
                y = bubbleSort(testCase.Data);
            end
            testCase.verifyEqual(y,testCase.SortedData);
        end
        
        function testMergeSort(testCase)
            while testCase.keepMeasuring
                y = mergeSort(testCase.Data);
            end
            testCase.verifyEqual(y,testCase.SortedData);
        end
        
    end
end

Запустите тесты эффективности для всех тестовых элементов, которые соответствуют 'testBubbleSort' метод и сохраните результаты в Baseline массив. Результаты могут отличаться от показанных результатов.

Baseline = runperf('TestSort','ProcedureName','testBubbleSort');
Running TestSort
.......... .......... .......... .......... ..........
.......... .......... .......... .......... ..........
.......... .......... .......... .......... ..........
.......... .......... .......... .......... ..........
.......... .......... .......... .......... ..........
.......... .......... .....
Done TestSort
__________

Запустите тесты эффективности для всех элементов, которые соответствуют 'testMergeSort' метод и сохраните результаты в Measurement массив.

Measurement = runperf('TestSort','ProcedureName','testMergeSort');
Running TestSort
.......... .......... .......... .......... ..........
.......... .......... .......... .......... ..........
.......... .......... .......... .......... ..........
.......... .......... .......... .......... ..........
Done TestSort
__________

Визуально сравните минимум MeasuredTime столбец в Samples таблица для каждой соответствующей пары Baseline и Measurement объекты.

comparisonPlot(Baseline,Measurement);

Comparison plot based on the minimum of sample measurement times

На этом графике сравнения большинство точек данных синего цвета, потому что они находятся ниже затененной области подобия. Этот результат указывает на наилучшее решение сортировки слияния для большинства тестов. Однако для достаточно маленьких списков сортировка пузырей выполняется лучше, чем или сравнимо с сортировкой слиянием, как показано оранжевой и серой точками на графике.

В качестве сводных данных сравнения график сообщает об улучшении эффективности на 78% из-за сортировки слияния. Это значение является средним геометрическим процентом улучшения, соответствующим всем точкам данных. Если график сравнения содержит недопустимые точки данных, сводные данные сравнений не будет сгенерированы.

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

Comparison plot based on the minimum of sample measurement times. A data tip displays detailed information about one of the points.

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

comparisonPlot(Baseline,Measurement,'max');

Comparison plot based on the maximum of sample measurement times

Уменьшите SimilarityTolerance на 0.01 при сравнении максимума времени измерения образца. Верните ComparisonPlot объект в cp чтобы можно было изменить его свойства позже.

cp = comparisonPlot(Baseline,Measurement,'max','SimilarityTolerance',0.01);

Comparison plot based on the maximum of sample measurement times. Similarity tolerance is 0.01.

Введенный в R2019b