Main Content

timeit

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

설명

예제

t = timeit(f)는 함수 핸들 f로 지정된 함수를 실행하는 데 필요한 시간(단위: 초)을 측정합니다. timeit 함수는 정확한 측정을 수행하기 위해 지정된 함수를 여러 번 호출하고 측정한 값의 중앙값을 반환합니다. 함수의 실행 시간이 빠르다면 timeit이 함수를 여러 번 호출할 수 있습니다.

예제

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

예제

모두 축소

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

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

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

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

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

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

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

t2 = timeit(f,3)
t2 = 0.0045

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

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을 재귀적으로 사용

확장 기능

버전 내역

R2013b에 개발됨