Main Content

matlab.perftest.TimeExperiment.limitingSamplingError

クラス: matlab.perftest.TimeExperiment
パッケージ: matlab.perftest

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

説明

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

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

  • サンプルの最小数: 4

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

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

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

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

入力引数

すべて展開する

名前と値の引数

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

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

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

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

サンプル測定の最小数。正の整数として指定します。この値は、テスト フレームワークがウォームアップの後、テスト コードを実行する最小回数を定義します。テスト フレームワークはテストが統計目標値を満たしたかどうかにかかわらず、少なくとも 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;
result = run(experiment,suite);
Running preallocationTest
.......... .......... .......... ..
Done preallocationTest
__________

最初のテストのテスト アクティビティを表示します。結果は異なる場合があります。

result(1).TestActivity
ans =

  8×12 table

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

    preallocationTest/testOnes    true      false       false         0.056052       warmup      05-Oct-2018 10:14:15    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    34fa8e1d-e21f-42b5-83bd-fd104ffcec12
    preallocationTest/testOnes    true      false       false         0.056227       warmup      05-Oct-2018 10:14:15    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    34fa8e1d-e21f-42b5-83bd-fd104ffcec12
    preallocationTest/testOnes    true      false       false         0.055969       warmup      05-Oct-2018 10:14:15    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    34fa8e1d-e21f-42b5-83bd-fd104ffcec12
    preallocationTest/testOnes    true      false       false         0.054961       warmup      05-Oct-2018 10:14:15    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    34fa8e1d-e21f-42b5-83bd-fd104ffcec12
    preallocationTest/testOnes    true      false       false         0.052572       sample      05-Oct-2018 10:14:15    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    34fa8e1d-e21f-42b5-83bd-fd104ffcec12
    preallocationTest/testOnes    true      false       false         0.051743       sample      05-Oct-2018 10:14:15    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    34fa8e1d-e21f-42b5-83bd-fd104ffcec12
    preallocationTest/testOnes    true      false       false         0.051709       sample      05-Oct-2018 10:14:15    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    34fa8e1d-e21f-42b5-83bd-fd104ffcec12
    preallocationTest/testOnes    true      false       false         0.051256       sample      05-Oct-2018 10:14:15    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    34fa8e1d-e21f-42b5-83bd-fd104ffcec12

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

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

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

最初のテストのテスト アクティビティを表示します。結果は異なる場合があります。

result(1).TestActivity
ans = 
  6×12 table

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

    preallocationTest/testOnes    true      false       false         0.053963       warmup      05-Oct-2018 10:21:31    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    22e4507c-e12c-4cac-8730-aff65e75a2e1
    preallocationTest/testOnes    true      false       false         0.053086       warmup      05-Oct-2018 10:21:31    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    22e4507c-e12c-4cac-8730-aff65e75a2e1
    preallocationTest/testOnes    true      false       false         0.052502       sample      05-Oct-2018 10:21:31    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    22e4507c-e12c-4cac-8730-aff65e75a2e1
    preallocationTest/testOnes    true      false       false          0.05252       sample      05-Oct-2018 10:21:31    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    22e4507c-e12c-4cac-8730-aff65e75a2e1
    preallocationTest/testOnes    true      false       false         0.052048       sample      05-Oct-2018 10:21:32    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    22e4507c-e12c-4cac-8730-aff65e75a2e1
    preallocationTest/testOnes    true      false       false         0.052434       sample      05-Oct-2018 10:21:32    MY-HOSTNAME     win64      9.6.0.966561 (R2019a)    [1x1 matlab.unittest.TestResult]    22e4507c-e12c-4cac-8730-aff65e75a2e1

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

バージョン履歴

R2016a で導入