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

성능을 개선하기 위한 기법

코드 성능의 속도를 높이기 위하여 다음 기법을 고려합니다.

환경

계산 리소스를 공유하면서 MATLAB® 코드의 성능을 저하시키는 백그라운드 프로세스를 확인하십시오.

코드 구조

코드를 구성할 때 다음에 유의합니다.

  • 스크립트 대신 함수를 사용합니다. 일반적으로 함수가 더 빠릅니다.

  • 중첩 함수보다는 로컬 함수를 사용합니다. 이는 함수에서 메인 함수의 변수에 액세스하지 않아도 되는 경우에 특히 유용합니다.

  • 모듈식 프로그래밍을 사용합니다. 드물게 액세스되는 코드가 들어 있는 파일이나 덩치가 큰 파일을 방지하려면 잘 짜인 간단한 함수로 코드를 분할하십시오. 이 방법으로 최초 실행에 걸리는 시간을 줄일 수 있습니다.

성능 개선을 위한 프로그래밍 사례

코드 성능 개선을 위해 다음의 프로그래밍 방식을 고려하십시오.

  • 사전할당(Preallocation) — 계속해서 배열의 크기를 조정하는 대신 배열에 필요한 최대 공간을 사전할당하는 것이 좋습니다. 자세한 내용은 사전할당(Preallocation) 항목을 참조하십시오.

  • 벡터화 — 루프 기반 코드를 작성하는 대신 MATLAB 행렬과 벡터 연산을 사용하는 것이 좋습니다. 자세한 내용은 벡터화 항목을 참조하십시오.

  • 루프 밖에 독립적인 연산 배치 — 코드가 for 루프 반복이나 while 루프 반복과 다르게 실행되지 않는 경우 코드를 루프 밖으로 옮겨 중복 계산을 피하도록 합니다.

  • 데이터형이 변경된 경우 새 변수 생성 — 기존 변수에 다른 형식의 데이터를 대입하기보다는 새 변수를 생성합니다. 기존 변수의 클래스나 배열 형태를 변경하면 이를 처리하는 데 시간이 더 걸립니다.

  • 쇼트서킷 연산자 사용 — 가능하다면 쇼트서킷 논리 연산자(&&, ||)를 사용합니다. 쇼트서킷을 적용하면 MATLAB이 첫 번째 피연산자로 결과를 완전하게 구할 수 없는 경우에만 두 번째 피연산자를 실행하므로 더욱 효율적입니다. 자세한 내용은 Logical Operators: Short Circuit 항목을 참조하십시오.

  • 전역 변수 사용 지양 — 전역 변수는 MATLAB 코드의 성능을 저하시킬 수 있으므로 전역 변수의 사용을 최소화하는 것이 바람직한 프로그래밍 방식입니다.

  • 내장 함수 오버로드 지양 — 표준 MATLAB 데이터 클래스에 내장 함수를 오버로드하는 것은 피하십시오.

  • "코드로서의 데이터" 사용 지양 — 상수 값을 가진 변수를 생성하는 큰 규모의 코드(예: 500라인 이상)가 있는 경우 변수를 생성하여 MAT 파일에 저장하는 것이 좋습니다. 그러면 변수를 생성하는 코드를 실행하는 대신 해당 변수를 불러올 수 있습니다.

특정 MATLAB 함수에 대한 팁

좋은 성능이 요구되는 코드를 작성할 경우 특정 MATLAB 함수에 대한 다음 팁을 고려하십시오.

  • 필요 이상으로 코드를 지우지 않도록 합니다. clear all을 프로그래밍 방식으로 사용하지 마십시오. 자세한 내용은 clear 항목을 참조하십시오.

  • inputname, which, whos, exist(var), dbstack 등 MATLAB의 상태를 쿼리하는 함수 사용을 지양하십시오. 런타임 내부 검사는 많은 계산량을 요합니다.

  • eval, evalc, evalin, feval(fname) 등의 함수 사용을 지양하십시오. 가능하다면 항상 feval에 대한 함수 핸들 입력을 사용하십시오. 텍스트에서 MATLAB 표현식을 간접적으로 실행하는 것은 많은 계산량을 요합니다.

  • 가능하다면 cd, addpath, rmpath 등의 프로그래밍 방식 사용을 지양하십시오. 런타임 중간에 MATLAB 경로를 변경하면 코드가 다시 컴파일됩니다.

관련 항목