이번역페이지는최신내용을담고있지않습니다。최신내용을문으로보려면여기를클릭하십시오。
성능을개선하기위한기법
코드성능의속도를높이기위하여다음기법을고려합니다。
환경
계산리소스를공유하면서matlab®코드의성능을저하시키는백그라운드프로세스를확하십시오。
코드 구조
코드를구성할때다음에유의합니다。
스크립트대신함수를사용합니다。일반적으로함수가더빠릅니다。
중첩함수보다는로컬함수를사용합니다。이는함수에서메함수의변수에액세스하지않아도되는경우에특히유용합니다。
모듈식프로그래밍을사용합니다。드물게액세스되는코드가들어있는파일이나덩치가큰파일을방지하려면잘짜인간단한함수로코드를분할하십시오。이방법으로최초실행에걸리는시간을줄일수있습니다。
성능개선을위한프로그래밍사례
코드성능개선을위해다음의프로그래밍방식을고려하십시오。
사전할당(预先配置)-계속해서배열의크기를조정하는대신배열에필요한최대공간을사전할당하는것이좋습니다。자세한내용은사전할당(预分配)항목을참조하십시오。
벡터화-루프기반코드를작성하는대신MATLAB행렬과벡터연산을사용하는것이좋습니다。자세한내용은벡터화항목을참조하십시오。
루프밖에독립적연산배치—코드가
为
루프반복이나而
루프반복과다르게실행되지않는경우코드를루프밖으로옮겨중복계산을피하도록합니다。데이터형이변경된경우새변수생성-기존변수에다른형식의데이터를대입하기보다는새변수를생성합니다。기존변수의클래스나배열형태를변경하면이를처리하는데시간이더걸립니다。
쇼트서킷연산자사용-가능하다면쇼트서킷논리연산자(
& &
,||
)를사용합니다。쇼트서킷을적용하면MATLAB이첫번째피연산자로결과를완전하게구할수없는경우에만두번째피연산자를실행하므로더욱효율적입니다。자세한내용은逻辑运算符:短路
항목을참조하십시오。전역변수사용지양-전역변수는MATLAB코드의성능을저하시킬수있으므로전역변수의사용을최소화하는것이바람직한프로그래밍방식입니다。
내장함수오버로드지양——표준MATLAB데이터클래스에내장함수를오버로드하는것은피하십시오。
”“코드로서의데이터사용지양-상수값을가진변수를생성하는큰규모의코드(예:500라인이상)가있는경우변수를생성하여예를들면垫파일이나
. csv
파일에저장하는것이좋습니다。그러면변수를생성하는코드를실행하는대신해당변수를불러올수있습니다。
특정MATLAB함수에대한팁
좋은성능이요구되는코드를작성할경우특MATLAB함정수에대한다음팁을고려하십시오。
필이상으로코드를지우지않도록합니다。
清除所有
을프로그래밍방식으로사용하지마십시오。자세한내용은清晰的
항목을참조하십시오。inputname
,哪一个
,谁
,存在(
,var
)dbstack
등matlab의상태를쿼리하는함수사용을지양하십시오。런타임내부검사는많은계산량을합니다。eval
,evalc
,evalin
,函数宏指令(
등의함수사용을지양하십시오。가능하다면항상帧
)函数宏指令
에대한함수핸들입력을사용하십시오。텍스트에서matlab ` ` ` ` `현식을간접적으로실행하는것은많은계산량을` ` ` `합니다。가능하다면
cd
,目录
,rmpath
등의프로그래밍방식사용을지양하십시오。런타임중간에matlab경로를변경하면코드가다시컴파일됩니다。