Senza vedere il codice, o informazioni su quale linguaggio è implementato nel suo difficile per fornire una soluzione specifica per il problema. Dici metodo in modo che possa escludere alcune soluzioni che potrebbero essere applicabili in alcune lingue.
Dal modo in cui si pone la soluzione, sembra che la velocità sia essenziale ma si è costretti a incorrere in qualche overhead decomprimendo il ciclo, sebbene (se si utilizza un linguaggio compilato) possa inline alcune cose per voi.
Se stai usando C, C ++ o un'altra lingua che ha dei puntatori, prenderei in considerazione la possibilità di scomporre i loop in funzioni appropriatamente chiamate e passare lungo quelle variabili richieste dal ciclo.
Inoltre, a seconda di come il tuo calcolo è disposto in memoria, puoi ancora mantenere la velocità che hai acquisito se vengono passati i puntatori appropriati in quanto non dovresti incorrere in nessun errore nella cache che non avevi già. Ma tieni a mente le ramificazioni condizionali mentre procedi.
Se stai utilizzando un'altra lingua, potresti avere successo nell'applicare alcuni insegnamenti di Martin Fowler ( link , link ).
The split loop is an often used performance optimisation in data intensive applications. When you are accessing to separate arrays in the same loop you can get hit badly by the cache misses. That is, if the arrays are large enough you loose locality of reference and the cache fails to do the job. Put enough code here and every operation will not hit the cache and instead have to go back out to main memory.
By splitting loops up into small separate components that only act on one array you get significant performance increases. In rendering code I've seen up to an order of magnitude difference. This is particularly beneficial if it is primitive type based and less so if class reference or pointer based where you need an additional dereference off into a random memory location. This technique is also very similar to loop unravelling for performance gains (although something I doubt would ever appear in a refactoring/patterns/OO type book :)
L'ultimo suggerimento sta tentando di semplificare la tua espressione usando la logica o determinando se c'è qualche struttura dati che meglio si adatta al tuo calcolo nell'aspetto della leggibilità.