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

时间:2018-11-19 10:28:55

标签: c++ loops for-loop periodicity periodic-processing

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

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更大,则昂贵的通话是较少-频繁,并且如果{{1} }是更小,通话昂贵的是更多-频繁。

有人有任何建议或提示吗?由于某些原因,我很难提出适当的条件。

1 个答案:

答案 0 :(得分:2)

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

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

以此类推。