ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

timeit

関数の実行に必要な時間の測定

構文

  • t = timeit(f)
  • t = timeit(f,numOutputs)

説明

t = timeit(f) は、関数ハンドル f によって指定された関数を実行するために必要な一般的な時間 (秒) を測定します。

t = timeit(f,numOutputs) は、必要な出力数 numOutputs と共に f を呼び出します。既定では、timeit は関数 f を呼び出し、出力を 1 つ返します (または関数が出力を返さない場合は、出力を返しません)。

すべて展開する

現在の日付の取得の実行時間の測定

timeit を使用して、date に対する関数呼び出しの時間を測定します。この例では、入力を受け付けない関数へのハンドルを使用します。

f = @date;
t = timeit(f)
t =

   1.3481e-04

行列の和の計算の実行時間の測定

複数の数学的行列演算 (行列の転置、要素ごとの乗算、列の和) の組み合わせの時刻を設定します。

A = rand(12000, 400);
B = rand(400, 12000);
f = @() sum(A.' .* B, 1);
timeit(f)
ans =

    0.0427

複数の出力をもつ svd の実行時間の比較

1 つの出力引数 s=svd(X) をもつ svd の実行にかかる時間を求めます。

X = [1 2; 3 4; 5 6; 7 8];
f = @() svd(X);
t1 = timeit(f)
t1 =

   1.5427e-05

svd の結果を、3 つの出力引数 [U,S,V]=svd(X) の場合と比較します。

t2 = timeit(f,3)
t2 =

   2.6695e-05

zeros を呼び出すためのカスタムの事前割り当ての実行時間の比較

入れ子ループを使用して、行列を割り当てる短い関数を作成します。入れ子ループを使用した配列の事前割り当ては効率的ではありませんが、ここでは説明をわかりやすくするために示します。

function mArr = preAllocFcn(x,y)
for m = 1:x
    for n = 1:y
        mArr(m,n) = 0;
    end
end
end

入れ子ループを使用した場合と、関数 zeros を使用した場合で、行列にゼロを割り当てる時間を比較します。

x = 1000;
y = 500;
g = @() preAllocFcn(x,y);
h = @() zeros(x,y);
diffRunTime = timeit(g)-timeit(h) 
diffRunTime =

    0.2004

入力引数

すべて展開する

f - 測定対象の関数関数ハンドル

測定対象の関数。関数ハンドルとして指定します。f は、入力を取らない関数に対するハンドルまたは空の引数リストをもつ無名関数に対するハンドルのいずれかです。

numOutputs - f からの必要な出力数整数

f からの必要な出力数。整数として指定します。f によって指定された関数の出力数が可変の場合、numOutputs はどの構文で timeit が関数の呼び出しに使用されるかを指定します。たとえば、関数 svd は、単一の出力 s または 3 つの出力 [U,S,V] を返します。numOutputs1 に設定すると、s = svd(X) 構文の実行時間が測定され、3 に設定すると、[U,S,V] = svd(X) 構文の実行時間が測定されます。

詳細

すべて展開する

ヒント

  • 次の操作を実行すると、予期せぬ出力が発生します。

    • tictoc 間での timeit の使用

    • tictoc への呼び出しを含む関数の時刻設定における timeit の使用

    • timeit の再帰的な使用

アルゴリズム

timeit は、指定した関数を複数回呼び出し、測定の中央値を計算します。

参考

| | |

この情報は役に立ちましたか?