Quelle serait la meilleure solution pour enrouler un index autour d'une plage si j'appelais le code plusieurs fois dans une boucle?Quoi de plus efficace pour la vitesse modulo ou if statement?
int length = 4;
int firstIndex = 4;
int lastIndex = 7;
int currIndex = 4;
// Example 1 (if statement)
// Incrementing currIndex
if (++currIndex > lastIndex)
currIndex = firstIndex;
// Decrementing currIndex
if (--currIndex < firstIndex)
currIndex = lastIndex
// Example 2 (Modulo)
// Incrementing currIndex
currIndex = firstIndex + (++currIndex % length);
// Decrementing currIndex
currIndex = firstIndex + ((--currIndex + length) % length);
Les exemples 1 et 2 ne semblent pas faire la même chose. C'est un peu comme nous demander si les pommes ou les oranges ont meilleur goût. –
Désolé startIndex aurait dû être firstIndex dans l'exemple modulo – ANewGalaxy
Il est très probable que ce soit [optimisation prématurée] (https://en.wikipedia.org/wiki/Program_optimization#When_to_optimize), et il y aura très peu de différence entre les deux. Si vous avez vraiment besoin de savoir, seuls les tests peuvent vous dire ce qui est le mieux après que JIT a fait son travail. Je vous suggère de coller avec le code qui montre le mieux * l'intention * du code, ce qui serait l'exemple 1. – Andreas