在循环内定期调用昂贵的函数

Call an expensive function periodically inside a loop

我在循环中调用了一个计算量大的函数:

for( int j = 0; j < Max; ++j ) {

    // ...

    processQueuedEvents(); // Computationally expensive call

    // ...

}

但是,我不需要在每个循环迭代中都运行这个昂贵的函数,所以我想定期调用它:

for( int j = 0; j < Max; ++j ) {

    // ...

    if ( /* The condition I'm talking about */ ) 
        processQueuedEvents(); // Computationally expensive call

    // ...

}

在这一点上,我需要为我的定期调用开发一个合适的条件。条件应该与 Max 相关,我的意思是,如果 Max 更大 ,那么昂贵的调用是 less-frequent如果 Max 较小 昂贵的电话是 更多 -频繁。

有人有什么建议或提示吗?出于某种原因,我很难想出一个合适的条件。

您没有提供有关要使用的增量函数的足够详细信息。如果你正在考虑一个班轮,你可以通过以下方式用因子 10 进行推理:

  • 0 <= Max < 10 - 每次执行循环都会调用昂贵的调用。
  • 10 <= Max < 100 - 每次 10-th (j % 10 == 0) 执行循环时调用昂贵的调用。
  • 100 <= Max < 1000 - 每次 100-th (j % 100 == 0) 执行循环时调用昂贵的调用。

等等。