Класс: 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 изменить свойства определенного графика сравнения после того, как вы создаете его.
Baseline — Результаты выполнения первичного эксперимента времениmatlab.perftest.TimeResult массивРезультаты выполнения первичного времени экспериментируют на тестовом наборе, заданном как TimeResult массив. Baseline должен иметь ту же длину как Measurement.
Measurement — Результаты выполнения вторичного эксперимента времениmatlab.perftest.TimeResult массивРезультаты выполнения вторичного времени экспериментируют на тестовом наборе, заданном как TimeResult массив. Measurement должен иметь ту же длину как Baseline.
stat — Статистическая величина, к которой применяются демонстрационные времена измерения'min'
(значение по умолчанию) | 'макс.' | 'означает' | 'медиана'Статистическая величина применилась к демонстрационным временам измерения каждого TimeResult объект в Baseline и Measurement, заданный как 'min'Max среднее значение, или 'median'.
Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
cp = comparisonPlot(Baseline,Measurement,'SimilarityTolerance',0.05,'Scale','linear')'Scale' — Шкала x - и y - осиШкала x - и y - оси ComparisonPlot объект, заданный как 'log' или 'linear'.
'SimilarityTolerance' — Допустимое отклонение отношения статистики от одного (значение по умолчанию) | числовой скалярДопустимое отклонение отношения статистики от одного, для пары подобных тестов производительности, заданных как числовое значение между 0 и 1.
SimilarityTolerance задает границы теневой области в графике сравнения. Точки данных, которые падают в этой области, представляют подобный Baseline и Measurement записи.
'Parent' — Родительский контейнерFigure объект (значение по умолчанию) | Panel возразите | Tab объектВизуализируйте вычислительную сложность двух алгоритмов сортировки, пузырьковой сортировки и сортировки слиянием, который элементы списка видов в порядке возрастания. Пузырьковая сортировка является простым алгоритмом сортировки, который неоднократно продвигается через список, сравнивает смежные пары элементов и подкачивает элементы, если они находятся в неправильном порядке. Сортировка слиянием, "делят и завоевывают" алгоритм, который использует в своих интересах простоту слияния отсортированных подсписков в новый отсортированный список.
В вашей текущей папке сохраните следующий код в 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, который сравнивает производительность алгоритмов сортировки слиянием и пузырьковой сортировки. 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);

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

Чтобы изучить худший случай, сортирующий производительность алгоритма для различных длин списка, создайте график сравнения на основе максимума демонстрационных времен измерения.
comparisonPlot(Baseline,Measurement,'max');
Уменьшайте SimilarityTolerance к 0.01 при сравнении максимума демонстрационных времен измерения. Возвратите ComparisonPlot объект в cp так, чтобы можно было изменить его свойства позже.
cp = comparisonPlot(Baseline,Measurement,'max','SimilarityTolerance',0.01);

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.