Периодически вызывайте дорогую функцию внутри цикла

Я вызываю вычислительно дорогую функцию внутри цикла:

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 является меньше дорогой звонок Больше-часто.

У кого-нибудь есть предложения или намеки? По какой-то причине мне трудно найти подходящее состояние.

0

Решение

Вы не предоставили достаточно информации о функции приращения, которую хотите использовать. Если вы рассматриваете линейный вариант, вы можете рассуждать с коэффициентами 10 следующим образом:

  • 0 <= Max < 10 — вызывать дорогостоящий вызов при каждом выполнении цикла.
  • 10 <= Max < 100 — вызовите дорогой звонок каждому 10-th (j % 10 == 0) выполнение цикла.
  • 100 <= Max < 1000 — вызовите дорогой звонок каждому 100-th (j % 100 == 0) выполнение цикла.

и так далее.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]