optimize and if statement
조회 수: 6 (최근 30일)
이전 댓글 표시
I am running code that runs through a loop millions of times. I am trying to make the loop as effect as possible. The loop cannot be arrayed as future values depend on previous values. I used the profiler to see what was taking the most time in the loop. The line that is taking the the most time is an if statement:
if abs((a-b)/b) <.000001
Is there any way to speed this line up? change in the structure of the if or change in the way the condition is evaluated?
댓글 수: 0
답변 (2개)
Walter Roberson
2014년 1월 24일
if b * 0.999999 < a & a < b * 1.000001
better recheck as it is pretty late at night for me.
David Sanchez
2014년 1월 24일
You can try with different combinations like:
if abs((a-b)/b)*10^6 <1
if -1<(a-b)*10^6/b && (a-b)*10^6/b <1
if -.000001<(a-b)/b && (a-b)/b <.000001
if abs((a-b)/b) <1/1000000
if -b<(a-b)*10^6 && (a-b)*10^6 <b
but the time taken to check the condition is very similar in all of them. I think you can't hardly improve much the speed of that line.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!