I call a computationally expensive function inside a loop:
for( int j = 0; j < Max; ++j ) {
// ...
processQueuedEvents(); // Computationally expensive call
// ...
}
However, I don't need to run the expensive function on every single loop iteration, so I want to call it periodically:
for( int j = 0; j < Max; ++j ) {
// ...
if ( /* The condition I'm talking about */ )
processQueuedEvents(); // Computationally expensive call
// ...
}
At this point, I need to develop a proper condition for my periodic call. The condition should correlate to Max
, I mean, if Max
is larger, the expensive call is less-frequent and if Max
is smaller the expensive call is more-frequent.
Does anybody have any suggestions or hints? For some reason, I have a hard time coming up with a proper condition.
You didn't provide enough details about the increment function you want to use. If you are considering a liner one you can reason with factors of 10 in the following manner:
0 <= Max < 10
- invoke the expensive call each execution of the loop.10 <= Max < 100
- invoke the expensive call each10-th (j % 10 == 0)
execution of the loop.100 <= Max < 1000
- invoke the expensive call each100-th (j % 100 == 0)
execution of the loop.and so on.