在循环内定期调用昂贵的函数
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)
执行循环时调用昂贵的调用。
等等。
我在循环中调用了一个计算量大的函数:
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)
执行循环时调用昂贵的调用。
等等。