Was wäre die schnellste Lösung, einen Index um einen Bereich zu wickeln, wenn der Code mehrmals in einer Schleife aufgerufen wird?Was wäre effizienter für Geschwindigkeit modulo oder if-Anweisung?
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);
Die Beispiele 1 und 2 scheinen nicht dasselbe zu tun. Es ist ein bisschen so, als würden wir gefragt, ob Äpfel oder Orangen besser schmecken. –
Sorry startIndex sollte firstIndex im Modulo-Beispiel gewesen sein – ANewGalaxy
Sehr wahrscheinlich ist dies [vorzeitige Optimierung] (https://en.wikipedia.org/wiki/Program_optimization#When_to_optimize), und es wird sehr wenig Unterschied zwischen den beiden sein. Wenn Sie wirklich wissen müssen, dann kann nur das Testen Ihnen sagen, was besser ist, nachdem JIT es getan hat. Ich würde vorschlagen, dass Sie bei dem Code bleiben, der die * Absicht * des Codes besser zeigt, der Beispiel 1 wäre. – Andreas