Ich habe diesen Block in meinem Programm:
if (x > 0) {
a = 1;
b = 4;
} else {
a = 2;
b = 3;
}
Dies kann mit einer ternären Operation wie folgt geschrieben werden:
a = (x > 0) ? 1 : 2;
b = (x > 0) ? 4 : 3;
Die Ergebnisse sind äquivalent, aber es handelt sich um einen wirklich kritischen Teil meiner Anwendung, der tausende Male pro Sekunde ausgeführt wird. Ich möchte einige Mikrosekunden einsparen, da diese Methode ein wenig wachsen wird.
Meine Frage: Auf ARM-Ebene, welche ist schneller? Ich glaube, dass der erste eine Branch-Anweisung erzeugt. Aber wie sieht es mit der ternären Operation aus? Wird diese auf dem iPhone auch zu einem Branch? Oder hat der ARM des iPhone ein böses Opcode, um die Arbeit zu erledigen?
Übrigens, ich habe auch eine böse Technik wie diese gesehen:
a = (x > 0) * 1 + (x <= 0) * 2;
Ist das wirklich schneller?