코드를프로파일링하여성능개선하기
프로파일링이란?
프로파일링은코드실행에걸리는시간을측정하고matlab®이가장긴시간을쓰는곳을식별하기위한방법입니다。시간이오래걸리는함수를식별하고나면가능한성능개선을위해이러한함수를평가해볼수있습니다。코드를프로파일링하여코드중에서실행되지않는라을확할수도있습니다。코드에서실행되지않는라인을확인하는것은코드에대한테스트를개발할때나디버그용도로코드의문제점을격리할때유용할수있습니다。
Matlab프로파일러를사용해대화형방식으로또는配置文件
함수를사용해프로그래밍방식으로코드를프로파일링할수있습니다。프로그래밍방식으로코드를프로파일링하는방법에관한자세한내용은配置文件
을참조하십시오。병렬로실행되는코드를프로파일링하는경우최상의결과를얻기위해서는并行计算工具箱™병렬프로파일러를사용해야합니다。자세한내용은并行代码分析(并行计算工具箱)항목을참조하십시오。
팁
미숙한상태로최적화된코드는실제성능향상에는도움이되지않고불필요하게복잡할수있습니다。처음으로구현할때는가능한한간단하게합니다。그런다음,속도가문제가되는경우프로파일링을사용하여병목현상을식별합니다。
코드프로파일링하기
코드를프로파일링하고성능을개선하려면다음과같은일반적절차를따르십시오。
코드에서프로파일러를실행합니다。
프로파일약결과를검토합니다。
함수와코드의개별라을조사합니다。
예를들어,상당한시간을사용하거나가장자주호출되는함수와코드라인을조사할수있습니다。
프로파일링결과를저장합니다。
코드에잠재적성능개선사항을구현합니다。
예를들어,루프내에
负载
문이있는경우한번만호출되도록루프밖으로负载
문을이동할수있습니다。파일을저장하고
清除所有
을실행합니다。프로파일러를다시실행하고결과를원래결과와비교합니다。위절차를반복하여계속적으로코드의성능을향상시킵니다。코드에서대부분의시간이몇개의내장함수를호출하는데쓰여지고있다면,코드가최적화된상태일가능성이높습니다。
코드에서프로파일러실행하기
코드라에서프로파일러를실행하려면다음을수행하십시오。
앱탭으로이동하여MATLAB아래에있는프로파일러앱아이콘을클릭하여프로파일러를엽니다。명령 창에
概要文件查看器
를입력할수도있습니다。프로파일러탭으로이동하여프로파일섹션의편집상자에프로파일링하려는코드를입력합니다。
예를들어,MATLAB과함께제공되는로트카——볼테라예제에대한피식자개체군과포식자개체군피크를찾는함수
solvelotka.m
을만듭니다。函数[preypeaks, orpeaks] = solvelotka(t0, tfinal, y0) [~,y] = ode23(@lotka,[t0 tfinal],y0);Preypeaks = calculatepeaks(y(:,1));calculatepeaks(y(:,2));[TF,P] = islocalmax(A);峰值= P(TF);结束
solvelotka
함수를프로파일링합니다。[preypeaks, predatory peaks] = solvelotka(0,15,[20;20])
현재MATLAB세션에서이명령문을이전에프로파일링한경우,편집상자드롭다운목록에서이명령문을선택할수도있습니다。
실행시간측정을클릭합니다。
프로파일링이완료되면프로파일러의프로파일약에결과가시됩니다。또한프로파일링한명령문은명령창에서실행된것으로@ @시됩니다。
편집기에열려있는코드파일을프로파일링하려면편집기탭의실행섹션에서실행>실행시간측정을선택하십시오。프로파일러가현재편집기탭에열려있는코드파일을프로파일링하고프로파일요약에결과를표시합니다。
프로파일약결과검토하기
코드에대해프로파일러를실행한후,프로파일요약은코드의전체실행에대한통계를보여주고호출된각함수에대한요약통계를제공합니다。예를들어,아래이미지는solvelotka
함수에대한프로파일약을보여줍니다。
프로파일요약결과상단에있는불꽃그래프는MATLAB이코드실행에소비한시간을시각적으로보여줍니다。실행된각함수는불꽃그래프에서막대로@ @현됩니다。사용자정의함수는파란색으로` ` ` ` `시되고,MathWorks®함수는회색으로@ @시됩니다。
그래프에있는함수는계층적순서대로표시되는데,부모함수는그래프아래쪽에나타나고자식함수는그래프위쪽에나타납니다。프로파일약레이블이지정된그래프에서바닥전체를가로지르는막대는실행된모든코드를나타냅니다。그래프에표시된막대의너비는함수실행에걸린시간을총실행시간의백분율로나타냅니다。
전체함수이름뿐아니라실제백분율과시간값을보려면그래프의막대위로마우스커서를이동하십시오。개별코드라인에대한정보를포함하여,함수에대한세부정보를표시하려면해당함수를나타내는막대를클릭하십시오。
불꽃프레임아래에있는함수테이블은불꽃그래프와유사한정보를@ @시합니다。처음에함수가처리되는데걸린시간순으로@ @시됩니다。아래@ @에는각열의정보에대한설명이나와있습니다。
열 | 설명 |
---|---|
함수 이름 | 프로파일링된코드가호출한함수의이름입니다。 |
호출 | 프로파일링된코드가함수를호출한횟수입니다。 |
총 시간 | 함수에소된총시간(단위:초)입니다。함수에소된시간은자식함수에소된시간을포함합니다。프로파일러자체가사용하는시간도있으며,이시간도결과에포함됩니다。실행시간이매우짧은파일의경우총시간이0일수있습니다。 |
자체 시간 | 함수에소된총시간(초)으로,자식함수에사용된시간은포함되지않습니다。자체시간에는프로파일링과정에서초래된일부오버헤드도포함됩니다。 |
총시간플롯 | 총시간과자체시간을비교하여그래프로보여줍니다。 |
특정열을기준으로함수테이블을정렬하려면열제목에있는화살@ @를클릭하십시오。예를들어,함수 이름열에있는화살@ @를클릭하면함수를사전순으로정렬할수있습니다。처음결과는총 시간을기준으로정렬한것입니다。개별코드라인에대한정보를포함하여,함수에대한세부정보를표시하려면함수이름을클릭하십시오。
함수와개별코드라조사하기
코드에서개선가능한점을찾으려면불꽃그래프나함수테이블에서상당한시간을소모하거나가장빈번하게호출되는함수를찾아야합니다。함수이름을클릭하면개별코드라인에대한정보를포함하여,함수에대한세부정보를표시할수있습니다。solvelotka > calculatepeaks
함수를클릭하는경우를예로들어보겠습니다。그러면프로파일러가이함수에대한세부정보를@ @시합니다。
프로파일러는페이지상단에서현재함수의이름옆에부모함수가이함수를호출한횟수와이함수에소요된총시간을표시합니다。불꽃그래프아래에표시되는링크를사용하여디폴트편집기에서함수를열거나표시되는결과를별개의창에복사합니다。
프로파일약으로돌아가려면프로파일러탭에서프로파일약버튼을클릭하십시오。또한불꽃그래프하단의프로파일약막대를클릭할수도있습니다。
개별함수를클릭하면프로파일러가다음섹션에추가정보를@ @시합니다。
섹션 | 세부 정보 |
---|---|
불꽃그래프 | MATLAB이프로파일링된함수를실행하는데소비한시간의시각적표현을보여주는불꽃그래프입니다。이그래프는자식함수(현재함수위에표시됨)와부모함수(현재함수아래에표시됨)를포함하여프로파일링된함수의계층을보여줍니다。사용자정의함수는파란색으로指导书시되고(), MathWorks함수는회색으로@ @시됩니다(). 그래프의막대위로마우스커서를이동하면전체함수이름뿐아니라실제백분율과시간값이표시됩니다。함수를나타내는막대를클릭하면함수에대한세부정보가@ @시됩니다。 |
부모 | 부모함수에서프로파일링된함수를호출한횟수를포함하여,프로파일링된함수를호출하는함수의목록입니다。 목록에있는함수이름을클릭하면그함수에대한세부정보가@ @시됩니다。 |
가장많은시간이소되는라 | 프로파일링된함수중처리시간이가장길었던코드라의목록입니다。 코드라을클릭하면함수목록@ @시섹션에나머지함수코드부분의컨텍스트내에서해당라이시됩니다。 |
자식 | 프로파일링된함수가호출한모든함수의목록입니다。 목록에있는함수이름을클릭하면그함수에대한세부정보가@ @시됩니다。 |
코드분석기결과 | 프로파일링된함수의문제점과잠재적개선사항의목록입니다。 |
실행률결과 | MATLAB프로파일링하는동안에서실행한함수의코드라인에대한코드실행률통계입니다。 프로파일러커버리지리포트를열려면현재폴더브라우저에서프로파일링된코드가포함된폴더로이동합니다。공백을마우스오른쪽버튼으로클릭한다음리포트>커버리지리포트를선택합니다。 코드에대한코드커버리지분석을추가로수행하려면生成HTML格式的代码覆盖率报告항목을참조하십시오。 |
함수목록@ @시 | 함수가matlab코드파일경우함수의소스코드입니다。 각코드라에대해함수목록@ @시에다음열이포함됩니다。
기본적으로프로파일러는실행시간이가장긴코드라을강조시합니다。강조시색이진할수록코드라의실행시간이긴것을나타냅니다。강조@ @시조건을변경하려면프로파일러탭으로이동하여보기섹션에서강조通讯录시를클릭하십시오。사용가능한강조@ @시옵션중에서선택합니다。예를들어,실행되지않은코드라을강조시하려면 |
결과저장하기
코드를개선한후변경사항의향을비교하려면프로파일링결과를저장하십시오。결과를저장하려면불꽃그래프아래에표시되는링크를사용하여표시되는결과를별개의창으로복사하십시오。
프로파일러탭으로이동하여인쇄버튼을클릭하여프로파일러에서결과를쇄할수도있습니다。
명령창에서여러명령문프로파일링하기
명령창에서둘이상의명령문을프로파일링하려면다음을수행하십시오。
명령창으로이동하여
剖面上
을입력합니다。프로파일링하려는명령문을입력하고실행합니다。
모든명령문을실행한후
配置文件了
를입력합니다。概要文件查看器
를입력하여프로파일러를엽니다。앱탭으로이동하여MATLAB아래에있는프로파일러앱아이콘을클릭해도됩니다。프로파일약결과를검토합니다。
앱프로파일링하기
앱디자이너에서만드는앱을프로파일링할수있습니다。또한信号处理工具箱™에함께포함된필터설계및분석툴과같이MathWorks제품과함께제공되는앱을프로파일링할수도있습니다。
앱을프로파일링하려면다음을수행하십시오。
앱탭으로이동하여MATLAB아래에있는프로파일러앱아이콘을클릭하여프로파일러를엽니다。명령 창에
概要文件查看器
를입력할수도있습니다。프로파일러툴스트립의프로파일섹션에서프로파일링시작을클릭합니다。버튼오른쪽의편집상자에코드가없는지확합니다。
앱을시작합니다。
앱을사용합니다。
마쳤으면프로파일러툴스트립에서프로파일링중지를클릭합니다。
프로파일약결과를검토합니다。
참고
앱시작과정이프로파일링되지않도록하려면2단계와3단계를반대로수행하십시오。즉,프로파일링시작을클릭하기전에앱을시작하십시오。