Il modo più efficiente per calcolare il numero di iterazioni da eseguire

1

Diciamo che ho un processo batch che viene eseguito 4 volte per ciclo e che deve eseguire un totale di 9 elementi.

Esempio:

  • Iterazione 1 esegue 4 elementi di 9, lasciando 5 a sinistra
  • L'iterazione 2 viene eseguita 4 volte su 9, lasciando 1 a sinistra
  • Iteration 3 esegue solo 1 elemento perché è tutto ciò che è rimasto.

Attualmente lo gestisco con un'operazione di modulo:

$number_of_items = 9
$number_of_executions_per_loop = 4

For $iteration = 1 to $number_of_items Step $number_of_executions_per_loop
   If $number_of_items < ($iteration * $number_of_executions_per_loop) Then
      $iteration_execution_count = MOD($number_of_items,$number_of_executions_per_loop)
   Else
      $iteration_execution_count = $number_of_executions_per_loop
   EndIf

   ExecuteJobsFunction($iteration_execution_count)

Next

Mi chiedo se ci sia un modo più pulito per gestire questi tipi di scenari che vedo spesso. C'è un trucco matematico che può essere fatto per determinare quanti elementi da eseguire?

    
posta Super1337 18.02.2015 - 05:48
fonte

1 risposta

1

A giudicare dai segni del dollaro sparsi nel tuo codice, sembra che tu stia utilizzando uno script di altissimo livello e probabilmente molto inefficiente, quindi prendere una percentuale diMOD() è probabilmente l'ultimo dei tuoi dubbi, e quello che fai va bene.

Ma se davvero vuoi semplificarlo, allora potresti prendere in considerazione qualcosa di simile al seguente:

number_of_items = 9
number_of_executions_per_loop = 4

For iteration = 1 to number_of_items Step number_of_executions_per_loop
   iteration_execution_count = number_of_executions_per_loop
   If iteration_execution_count > number_of_items - iteration Then
      iteration_execution_count = number_of_items - iteration
   EndIf

   ExecuteJobsFunction(iteration_execution_count)

Next
    
risposta data 18.02.2015 - 09:49
fonte

Leggi altre domande sui tag