Letzten Sonntag habe ich euch mein
Profiler.js vorgestellt. Heute folgen erste Ergebnisse. Ich habe gespielt mit Zuweisungen nach Fallunterscheidungen.
Als Beispiel dient uns nun der Fall, eine numerische Variable zu haben, dessen Wert wir einer anderen zuweisen möchten, ausser wenn sie kleiner als 0 ist, dann soll die neue Variable 0 enthalten. Hierfür habe ich 3 Lösungsansätze ausprobiert.
var givenValue = 100;
// Variante 1: Ternärer Operator
newValue = (givenValue < 0 ? 0 : givenValue);
// Variante 2: Nutzung der Math.max-Methode
newValue = Math.max(givenValue, 0);
// Variante 3: if-else-Kontrollstruktur
if (givenValue < 0) {
newValue = 0;
} else {
newValue = givenValue;
}
Ergebnis
Zu meiner ersten Überraschung war Variante 2 diejenige, die am längsten dauert (Ich hatte vom Aufruf Javascript-interner Methoden mehr Power erwartet). Der ternäre Operator verweilt ganz knapp hinter dem
normalen if-else auf Platz 2.
Fazit
Von allen drei Fällen ist die if-else-Variante die schnellste. Diese spricht mich auch von der Codelesbartkeit am meisten an. Sofort ist verständlich, was das Programm an dieser Stelle tun soll.
Frage
Habt ihr noch eine weitere Variante, die hier gebenchmarked werden soll? Wie steht ihr zu Cleverness im Code? Wo fühlt ihr euch mehr zu Hause - bei gut lesbarem normalem Code oder cleverem, trickreichen, aber gut dokumentiertem Code?