optimize and if statement
7 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposte (2)
Walter Roberson
il 24 Gen 2014
if b * 0.999999 < a & a < b * 1.000001
better recheck as it is pretty late at night for me.
David Sanchez
il 24 Gen 2014
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 Commenti
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!