0

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

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较大则昂贵的呼叫频率较低,如果较小Max,则昂贵的呼叫频率较高

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

4

1 回答 1

2

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

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

等等。

于 2018-11-19T10:44:54.400 回答