Próbowałem google, ale nie miałem szczęścia.Czy kolejność przełączników ma wpływ na prędkość?
Mam bardzo duży przełącznik, a niektóre przypadki to , co jest oczywiście bardziej powszechne od niż inne.
Chciałbym więc wiedzieć, czy zamówienie jest rzeczywiście przechowywane tak, jak jest, a "górne" przypadki są testowane przed "niższymi", dlatego są szybciej oceniane.
Chciałbym zachować moje zamówienie, ale jeśli to boli, to porządkowanie gałęzi będzie dobrym pomysłem.
Dla ilustracji:
switch (mark) {
case Ion.NULL:
return null;
case Ion.BOOLEAN:
return readBoolean();
case Ion.BYTE:
return readByte();
case Ion.CHAR:
return readChar();
case Ion.SHORT:
return readShort();
case Ion.INT:
return readInt();
case Ion.LONG:
return readLong();
case Ion.FLOAT:
return readFloat();
case Ion.DOUBLE:
return readDouble();
case Ion.STRING:
return readString();
case Ion.BOOLEAN_ARRAY:
return readBooleans();
case Ion.BYTE_ARRAY:
return readBytes();
case Ion.CHAR_ARRAY:
return readChars();
case Ion.SHORT_ARRAY:
return readShorts();
case Ion.INT_ARRAY:
return readInts();
case Ion.LONG_ARRAY:
return readLongs();
case Ion.FLOAT_ARRAY:
return readFloats();
case Ion.DOUBLE_ARRAY:
return readDoubles();
case Ion.STRING_ARRAY:
return readStrings();
default:
throw new CorruptedDataException("Invalid mark: " + mark);
}
To nie jest wąskie gardło, a ja go właściwie wyprofilowałem. Chcę tylko wiedzieć, czy to naprawdę wpływa na szybkość wykonania - z ciekawości. – MightyPork
Jestem pewien, że zamówienie nie ma żadnej różnicy. JVM nie przechodzi przez przypadki po kolei, tak jak w przypadku długiego else/if. Jest to raczej "spojrzenie, gdzie pójść dalej". –
Czy próbowałeś? –