이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

timeit

함수 실행에 필요한 시간 측정

설명

예제

t = timeit(f)는 함수 핸들 f로 지정된 함수를 실행하는 데 필요한 일반적인 시간(단위: 초)을 측정합니다.

예제

t = timeit(f,numOutputs)는 원하는 출력값 개수 numOutputs를 갖도록 f를 호출합니다. 기본적으로 timeit은 하나의 출력값을 갖도록 함수 f를 호출합니다. 반환하는 출력값이 없는 함수의 경우에는 출력값을 갖지 않도록 하여 호출합니다.

예제

모두 축소

timeit을 사용하여 date에 대한 함수 호출 시간을 측정합니다. 이 예제에서는 입력값을 받지 않는 함수에 대한 핸들을 사용합니다.

f = @date;
t = timeit(f)
t = 4.9123e-05

여러 수학적 행렬 연산의 조합, 즉 행렬 전치, 요소별 곱셈, 열 합에 걸리는 시간을 측정합니다.

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

출력 인수가 하나인 svd, 즉 s = svd(X)를 실행하는 데 걸리는 시간을 확인합니다.

X = rand(100);
f = @() svd(X);
t1 = timeit(f)
t1 = 0.0020

출력 인수가 세 개인 svd, 즉 [U,S,V] = svd(X)에 대한 결과를 비교합니다.

t2 = timeit(f,3)
t2 = 0.0112

중첩된 루프를 사용하여 행렬을 할당할 짧은 함수를 만듭니다. 비효율적이긴 하지만 이해를 돕기 위해 여기에서는 중첩된 루프를 사용하여 배열을 사전할당하는 방법을 보여줍니다.

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

행렬에 0을 할당하는 데 중첩 루프도 사용해 보고 zeros 함수도 사용해 본 뒤 시간을 비교합니다.

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

    0.1584

입력 인수

모두 축소

측정할 함수로, 함수 핸들로 지정됩니다. f는 입력값을 받지 않는 함수에 대한 핸들이거나 빈 인수 목록을 가지는 익명 함수에 대한 핸들입니다.

f에서 원하는 출력값의 개수로, 정수로 지정됩니다. f로 지정된 함수의 출력값 개수가 가변적인 경우 timeitnumOutputs에 따라 함수를 호출하는 데 사용할 구문을 정하게 됩니다. 예를 들어, svd 함수는 단일 출력값 s 또는 3개의 출력값 [U,S,V]를 반환합니다. numOutputs1로 설정하여 s = svd(X) 구문의 시간을 측정하거나 3으로 설정하여 [U,S,V] = svd(X) 구문의 시간을 측정하십시오.

  • 다음 동작은 예기치 않은 출력값을 내놓습니다.

    • tictoc 사이에 timeit 사용
    • tictoc에 대한 호출이 포함된 함수를 실행하는 시간을 timeit을 사용하여 측정
    • timeit을 반복적으로 사용

알고리즘

timeit은 지정된 함수를 여러 번 호출하여 측정된 값의 중앙값을 계산합니다.

R2013b에 개발됨