2017-04-20 8 views
1

은 그래서 두 개의 for 루프를 작성하기 전에 tictoc을 설정하고 각 후 :루프의 타이밍 실행에 의한 MatLab의 알고리즘 테스트 속도 - 처음으로 for 루프가 항상 빠르기 때문에 신뢰할 수 없는가? 내가 매트랩에서 특정 작업을 수행 할 수있는 최적의 방법을 결정하기 위해 노력하고

mMax = 5000; 

tic 
% Approach 1 
for m=1:mMax 
    result_1 = ...; 
end 
toc 


tic 
% Approach 2 
for m=1:mMax 
    result_2 = ...; 
end 
toc 

처음에 코드를 여러 번 실행 한 후 접근법 1은 접근법 2보다 약 3 배 빠르며 더 나은 결과를 얻은 것으로 보입니다.

그러나 Appraoch 2 루프 다음에 접근법 1 루프를 이동했습니다. 이번에는 접근법 2가 접근법 1보다 두 배 빠른 것처럼 보였습니다.

그래서 첫 번째 for 루프에서 소비 된 리소스는 두 번째 루프에서 사용할 수있는 리소스에 영향을 미칩니 까?

이 접근법의 성능을 가장 빠르게 테스트하려면 어떻게해야합니까? 그들 사이에 잠깐 멈추는 것으로 충분합니까? 접근 방식이 둘 다 '평평한 운동장'을 갖도록 MatLab을 '내뿜는'방법이 있습니까? 각 방법에 대한

뭔가 같은 하나 개의 함수를 만들 :

+1

"프로파일 링"을 시도 했습니까? – Ozcan

답변

1

전체 코드를 보지 않고 나는 다음을 제안

myTest.m

function myTest() 
    mMax = 5000; 
    tic; 
    myApproachA_test(mMax); 
    toc; 

    tic; 
    myApproachB_test(mMax); 
    toc; 
end 

myApproachA_test.m 및 myApproachB_test .m like :

function myApproachA_test(nTrials) 
    for m=1:nTrials 
     result_1 = ...; 
    end 
end