Я вызываю вычислительно дорогую функцию внутри цикла:
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
является меньше дорогой звонок Больше-часто.
У кого-нибудь есть предложения или намеки? По какой-то причине мне трудно найти подходящее состояние.
Вы не предоставили достаточно информации о функции приращения, которую хотите использовать. Если вы рассматриваете линейный вариант, вы можете рассуждать с коэффициентами 10 следующим образом:
0 <= Max < 10
— вызывать дорогостоящий вызов при каждом выполнении цикла.10 <= Max < 100
— вызовите дорогой звонок каждому 10-th (j % 10 == 0)
выполнение цикла.100 <= Max < 1000
— вызовите дорогой звонок каждому 100-th (j % 100 == 0)
выполнение цикла.и так далее.
Других решений пока нет …