comparisonPlot
クラス: matlab.perftest.TimeResult
パッケージ: matlab.perftest
プロットを作成して、ベースラインと測定テストの結果を比較
構文
説明
comparisonPlot(
は、配列 Baseline
,Measurement
)Baseline
と配列 Measurement
内の各 TimeResult
オブジェクトを視覚的に比較するプロットを作成します。比較は、サンプル測定時間の最小値に基づいて行われます。
comparisonPlot(
は、Baseline
,Measurement
,stat
)Baseline
と Measurement
内の各 TimeResult
オブジェクトのサンプル測定時間に適用される統計を指定します。
comparisonPlot(___,
は、1 つ以上の Name,Value
)Name,Value
のペア引数で指定された追加オプションをもつ比較プロットを作成します。たとえば、comparisonPlot(Baseline,Measurement,'Scale','linear')
は、x 軸と y 軸が線形スケールのプロットを作成します。
cp = comparisonPlot(___)
は、matlab.unittest.measurement.chart.ComparisonPlot
クラスのインスタンスとして指定されている ComparisonPlot
オブジェクトを返します。特定の比較プロットを作成した後にそのプロパティを変更するには、cp
を使用します。
入力引数
Baseline
— 1 次時間実験の実行結果
matlab.perftest.TimeResult
配列
テスト スイートで 1 次時間実験を実行した結果。TimeResult
配列として指定します。Baseline
は Measurement
と同じ長さでなければなりません。
Measurement
— 2 次時間実験の実行結果
matlab.perftest.TimeResult
配列
テスト スイートで 2 次時間実験を実行した結果。TimeResult
配列として指定します。Measurement
は Baseline
と同じ長さでなければなりません。
stat
— サンプル測定時間に適用される統計
'min'
(既定値) | 'max' | 'mean' | 'median'
Baseline
と Measurement
内の各 TimeResult
オブジェクトのサンプル測定時間に適用される統計。'min'
、'max'
、'mean'
、または 'median'
として指定します。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: cp = comparisonPlot(Baseline,Measurement,'SimilarityTolerance',0.05,'Scale','linear')
Scale
— x 軸と y 軸のスケール
'log' (既定値) | 'linear'
ComparisonPlot
オブジェクトの x 軸と y 軸のスケール。'log'
または 'linear'
として指定します。
SimilarityTolerance
— 統計的比率の 1 からの許容偏差
0.1
(既定値) | 数値スカラー
類似するパフォーマンス テストのペアについて、統計的比率の 1 からの許容偏差。0
~ 1
の数値として指定します。
SimilarityTolerance
は、比較プロットの影付き領域の境界を指定します。この領域内にあるデータ点は、Baseline
と Measurement
の類似するエントリを表します。
例
並べ替えアルゴリズムのパフォーマンスの視覚的な比較
リスト要素を昇順に並べ替える 2 つの並べ替えアルゴリズム、バブル ソートとマージ ソートの計算量を可視化します。バブル ソートは、リストを段階的に繰り返し処理し、隣接する要素のペアを比較して、順序が間違っている場合に要素を入れ替える単純なアルゴリズムです。マージ ソートは、並べ替え済みのサブリストをマージして新しく並べ替えられたリストを作成するという簡単な手法を利用した、"分割統治" アルゴリズムです。
現在のフォルダーで、以下のコードを 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 __________
Baseline
オブジェクトと Measurement
オブジェクトの対応ペアごとに、Samples
テーブルの MeasuredTime
列の最小値を視覚的に比較します。
comparisonPlot(Baseline,Measurement);
この比較プロットでは、ほとんどのデータ点は、影付きの類似領域より下にあるため青色になっています。この結果は、大部分のテスト ケースでマージ ソートのパフォーマンスの方が優れていることを示しています。ただし、プロット上のオレンジとグレーの点が示すように、ある程度小さいリストではバブル ソートのパフォーマンスがマージ ソートより優れていたり、バブル ソートとマージ ソートのパフォーマンスが同等であったりします。
このプロットには、比較の概要として、マージ ソートを使用することでパフォーマンスが 78% 向上するというレポートが示されています。この値は、すべてのデータ点に対応する向上率の幾何平均です。比較プロットに無効なデータ点が含まれている場合、比較の概要は生成されません。
任意のデータ点を押すか、カーソルを合わせると、比較されている時間測定結果に関する詳細情報を表示できます。
異なるリストの長さで並べ替えアルゴリズムの最悪のパフォーマンスを調べるには、サンプル測定時間の最大値に基づいて比較プロットを作成します。
comparisonPlot(Baseline,Measurement,'max');
サンプル測定時間の最大値を比較する場合は、SimilarityTolerance
を 0.01
に減らします。後でプロパティを変更できるように、ComparisonPlot
オブジェクトを cp
に返します。
cp = comparisonPlot(Baseline,Measurement,'max','SimilarityTolerance',0.01);
バージョン履歴
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)