Main Content

코드의 성능 측정하기

성능 시간 측정 함수 개요

timeit 함수와, 스톱워치 타이머 함수인 tictoc을 사용해 코드가 실행되는 데 걸리는 시간을 측정할 수 있습니다. 함수 실행 시간을 엄격하게 측정하려는 경우에는 timeit 함수를 사용하십시오. 전체 함수가 아니라 더 작은 코드 일부에 대한 시간을 측정하려면 tictoc을 사용하십시오.

함수 호출 정보나 개별 코드 라인의 실행 시간 정보 등과 같은 코드 성능에 대한 자세한 내용을 확인하려면 MATLAB® 프로파일러를 사용하십시오. 자세한 내용은 코드를 프로파일링하여 성능 개선하기 항목을 참조하십시오.

시간 함수

함수를 실행하는 데 필요한 시간을 측정하려면 timeit 함수를 사용하십시오. timeit 함수는 지정된 함수를 여러 번 호출하여 측정된 값의 중앙값을 반환합니다. 이 함수는 측정할 함수에 대한 핸들을 받고 일반적인 실행 시간을 초 단위로 반환합니다. 작업 공간에 정의된 두 개의 입력 인수, xy를 사용하는 함수 computeFunction을 정의했다고 가정하겠습니다. timeit을 사용하여 함수를 실행하는 데 걸리는 시간을 계산할 수 있습니다.

f = @() myComputeFunction(x,y); % handle to function
timeit(f)

코드의 부분적 실행 시간 측정하기

프로그램의 일부를 실행하는 데 걸리는 시간을 측정하거나 프로그램의 일부를 서로 다르게 구현한 것에 대한 속도를 비교해야 할 경우, 스톱워치 타이머 함수 tictoc을 사용할 수 있습니다. tic을 불러오면 타이머가 시작되고, 그 다음에 오는 toc이 경과 시간을 읽습니다.

tic
   % The program section to time. 
toc

때로 프로그램이 너무 빨리 실행되어 tictoc이 유용한 데이터를 제공하지 못하는 경우도 있습니다. 코드가 1/10초보다 빠르게 실행되는 경우에는 루프에서 실행되는 코드 시간을 측정한 다음, 평균을 구해서 한 번의 실행에 걸리는 시간을 찾을 수 있습니다.

cputime 함수와 tic/toc, timeit 함수 비교

timeit이나 tictoc을 사용하여 코드의 성능을 측정하는 것이 좋습니다. 이러한 함수는 wall-clock 시간을 반환합니다. tictoc과 달리 timeit 함수는 코드를 여러 번 호출하며, 따라서 최초 실행에 걸리는 시간도 고려합니다.

cputime 함수는 전체 CPU 시간을 측정하고 모든 스레드에 걸쳐 합계를 계산합니다. 이 측정 방식은 timeit이나 tic/toc이 반환하는 wall-clock 시간과 다르며, 왜곡된 정보를 줄 수 있습니다. 예를 들면 다음과 같습니다.

  • pause 함수의 CPU 시간은 일반적으로 작지만, wall-clock 시간은 MATLAB 실행이 일시 중지된 실제 시간을 고려합니다. 따라서 wall-clock 시간이 더 길 수 있습니다.

  • 함수가 4개의 처리 코어를 균일하게 사용할 경우 CPU 시간은 대략적으로 wall-clock 시간보다 4배 더 클 수 있습니다.

성능 측정을 위한 팁

코드 성능을 측정할 때 다음 팁을 고려하십시오.

  • 충분히 많은 코드 부분의 실행 시간을 측정합니다. 이상적으로는 코드 실행 측정 시간이 1/10초를 초과해야 합니다.

  • 시간을 측정하려는 코드를 명령줄에서 또는 스크립트 내부에서 시간을 측정하는 대신, 함수에 넣어 시간을 측정합니다.

  • 최초 실행에 걸리는 시간을 측정하지 않는 한 코드를 여러 번 실행합니다. timeit 함수를 사용합니다.

  • 성능을 측정할 경우 clear all을 사용하지 않습니다. 자세한 내용은 clear 함수를 참조하십시오.

  • 출력값을 기본 출력 변수인 ans로 내보내지 말고 변수를 지정하여 내보냅니다.

참고 항목

| | |

관련 항목