Main Content

matlab.perftest.TimeExperiment.limitingSamplingError

クラス: matlab.perftest.TimeExperiment
名前空間: matlab.perftest

指定された許容誤差および信頼度をもつ時間実験を構築

説明

experiment = matlab.perftest.TimeExperiment.limitingSamplingError は各テスト スイート要素について、指定された統計目標値 (許容誤差、信頼度など) をもつ時間実験を構築します。このメソッドは FrequentistTimeExperiment のインスタンスを返します。この構文は以下の既定値を使用してサンプル測定値の数を決定します。

  • ウォームアップ測定の数: 5

  • サンプルの最小数: 4

  • 他の統計目標値が満たされていない場合に収集するサンプルの最大数: 256

  • サンプルの相対許容誤差の目標値: 0.05 (5%)

  • サンプルが相対許容誤差内に収まる信頼度: 0.95 (95%)

experiment = matlab.perftest.TimeExperiment.limitingSamplingError(Name,Value) は、1 つ以上の名前と値の引数で指定された追加オプションを使用して時間実験を構築します。この構文を使用して、上記の既定値をオーバーライドします。

入力引数

すべて展開する

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: experiment = matlab.perftest.TimeExperiment.limitingSamplingError('RelativeMarginOfError',0.12,'MaxSamples',100) は、サンプルの相対許容誤差が 12% になるか、100 個の測定値を収集するまで、サンプル測定値を収集する時間実験を作成します。

ウォームアップ測定の数。非負の整数として指定します。NumWarmups は、テスト フレームワークがウォームアップのためにテスト コードを実行する回数を定義します。

サンプル測定の最小数。正の整数として指定します。この値は、フレームワークがウォームアップの実行後、テスト コードを実行する最小回数を定義します。フレームワークはテストが統計目標値を満たしたかどうかにかかわらず、少なくとも MinSamples 回テスト コードを実行します。

サンプル測定の最大数。正の整数として指定します。この値は、フレームワークが NumWarmups の後、テスト コードを実行する最大回数を定義します。実験が統計目標値を満たさない場合、フレームワークは最大 MaxSamples 個を収集します。

サンプルの相対許容誤差の目標値。正の数値として指定します。

フレームワークは次の式を使用して、サンプル X の相対許容誤差を計算します。

relMoE=Tstd(X)mean(X)length(X)

ここで T は、指定された ConfidenceLevel と自由度 length(X)-1 を使用してスチューデント t 分布から得られる T スコアです。

サンプルが相対許容誤差内に収まる信頼度。0 から 1 までの数値で指定します。

すべて展開する

現在のフォルダーに、さまざまな事前割り当てメソッドを比較するクラスベースのテスト preallocationTest.m を作成します。

classdef preallocationTest < matlab.perftest.TestCase
    methods (Test)
        function testOnes(testCase)
            x = ones(1,1e7);
        end
        function testIndexingWithVariable(testCase)
            id = 1:1e7;
            x(id) = 1;
        end
        function testIndexingOnLHS(testCase)
            x(1:1e7) = 1;
        end
        function testForLoop(testCase)
            for i=1:1e7
                x(i) = 1;
            end
        end
    end
end

テスト スイートを作成します。

suite = testsuite("preallocationTest");

可変数のサンプル測定により時間実験を構築して、テストを実行します。

import matlab.perftest.TimeExperiment
experiment = TimeExperiment.limitingSamplingError;
results = run(experiment,suite);
Running preallocationTest
.......... .......... .......... ......
Done preallocationTest
__________

最初のテストのテスト アクティビティを表示します。このテストについて、パフォーマンス テスト フレームワークは 5 個のウォームアップ測定値 (既定) および 4 個のサンプル測定値を収集しました。4 個のサンプル測定値を収集した後、フレームワークは既定の統計目標値を満たしました。

results(1).TestActivity
ans =

  9×12 table

               Name               Passed    Failed    Incomplete    MeasuredTime    Objective         Timestamp             Host        Platform                 Version                            TestResult                         RunIdentifier            
    __________________________    ______    ______    __________    ____________    _________    ____________________    ___________    ________    __________________________________    ______________________________    ____________________________________

    preallocationTest/testOnes    true      false       false         0.016621       warmup      12-Oct-2022 16:19:12    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    a04b1262-f4c3-4af5-b68e-ae54a6ae24b1
    preallocationTest/testOnes    true      false       false         0.016783       warmup      12-Oct-2022 16:19:12    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    a04b1262-f4c3-4af5-b68e-ae54a6ae24b1
    preallocationTest/testOnes    true      false       false         0.016685       warmup      12-Oct-2022 16:19:12    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    a04b1262-f4c3-4af5-b68e-ae54a6ae24b1
    preallocationTest/testOnes    true      false       false         0.017241       warmup      12-Oct-2022 16:19:12    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    a04b1262-f4c3-4af5-b68e-ae54a6ae24b1
    preallocationTest/testOnes    true      false       false         0.017496       warmup      12-Oct-2022 16:19:12    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    a04b1262-f4c3-4af5-b68e-ae54a6ae24b1
    preallocationTest/testOnes    true      false       false         0.016733       sample      12-Oct-2022 16:19:12    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    a04b1262-f4c3-4af5-b68e-ae54a6ae24b1
    preallocationTest/testOnes    true      false       false         0.016654       sample      12-Oct-2022 16:19:12    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    a04b1262-f4c3-4af5-b68e-ae54a6ae24b1
    preallocationTest/testOnes    true      false       false         0.016602       sample      12-Oct-2022 16:19:12    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    a04b1262-f4c3-4af5-b68e-ae54a6ae24b1
    preallocationTest/testOnes    true      false       false         0.017102       sample      12-Oct-2022 16:19:12    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    a04b1262-f4c3-4af5-b68e-ae54a6ae24b1

時間実験の構築により、2 個のウォームアップ測定値を収集し、信頼度 90% の範囲で相対許容誤差 10% のサンプル平均値に達するまで、可変回数のテストを実行します。

experiment = TimeExperiment.limitingSamplingError("NumWarmups",2, ...
    "RelativeMarginOfError",0.10,"ConfidenceLevel",0.90);
results = run(experiment,suite);
Running preallocationTest
.......... .......... ....
Done preallocationTest
__________

最初のテストのテスト アクティビティを表示します。このテストについて、フレームワークは 2 個のウォームアップ測定値と 4 個のサンプル測定値を収集しました。4 個のサンプル測定値を収集した後、フレームワークは指定された統計目標値を満たしました。

results(1).TestActivity
ans =

  6×12 table

               Name               Passed    Failed    Incomplete    MeasuredTime    Objective         Timestamp             Host        Platform                 Version                            TestResult                         RunIdentifier            
    __________________________    ______    ______    __________    ____________    _________    ____________________    ___________    ________    __________________________________    ______________________________    ____________________________________

    preallocationTest/testOnes    true      false       false         0.016576       warmup      12-Oct-2022 16:23:04    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    932317a8-bb61-4cba-945e-082f38eb0ced
    preallocationTest/testOnes    true      false       false         0.016709       warmup      12-Oct-2022 16:23:04    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    932317a8-bb61-4cba-945e-082f38eb0ced
    preallocationTest/testOnes    true      false       false         0.016672       sample      12-Oct-2022 16:23:04    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    932317a8-bb61-4cba-945e-082f38eb0ced
    preallocationTest/testOnes    true      false       false         0.017231       sample      12-Oct-2022 16:23:04    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    932317a8-bb61-4cba-945e-082f38eb0ced
    preallocationTest/testOnes    true      false       false         0.017646       sample      12-Oct-2022 16:23:04    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    932317a8-bb61-4cba-945e-082f38eb0ced
    preallocationTest/testOnes    true      false       false         0.016836       sample      12-Oct-2022 16:23:04    MY-HOSTNAME     win64      9.14.0.2078117 (R2023a) Prerelease    1×1 matlab.unittest.TestResult    932317a8-bb61-4cba-945e-082f38eb0ced

バージョン履歴

R2016a で導入

すべて展開する