Kurz: Ternär-Operator im Benchmark

Kaum eine Programmiersprache hat ihn nicht: Den Ternär-Operator (engl.: ternary operator).
Manche Entwickler meiden ihn da er die Lesbarkeit erschweren soll. Andere setzen ihn ein um die Übersichtlichkeit von Methoden zu erhöhen (mich eingeschlossen). Hier wird jedoch nicht der Einsatz diskutiert, sondern die Geschwindigkeit des Operator gegenüber der herkömmlichen If-Abfrage gemessen. Die Benchmarks beschränken sich dabei auf PHP, Java und Perl.

Die Benchmarks sind ziemlich trivial:

  • Zunächst werden die Variablen initialisiert. Dabei handelt es sich in allen Sprachen um zwei Variablen vom Typ String sowie eine Variable vom Typ Integer
  • In einer For-Schleife, die 90.000.000 Mal durchläuft, werden die beiden Strings jeweils per If-Abfrage und per Ternär-Operator verglichen. Ist der Vergleich wahr, wird die Integer-Variable um 1 inkrementiert, sonst um 1 dekrementiert.

Testszenario

PHP

Version

Benchmark If / Else

Benchmark Ternär

Java

Version

Benchmark If / Else

Benchmark Ternär

Perl

Version

Benchmark If / Else

Benchmark Ternär

Ausführung

Alle Benchmarks wurden auf der Kommandozeile unter Debian GNU/Linux Lenny ausgeführt. Die Zeiten wurden mit dem Kommandozeilen Tool time gemessen.

Ergebnis

Wirklich überrascht hat mich nur das Ergebnis der Java-Benchmarks. Die PHP- und Perl-Benchmarks zeigten nur vernachlässigbare Performance-Unterschiede.