-
Ritter
Da es ja eine reine Interessensfrage ist:
Ich behaupte mal der zweite Teil (If-Abfrage) ist schneller.
Es ist natürlich möglich, daß Ruby die Max- und Min-Aufrufe im ersten Teil in If-Konstrukte intern zwecks Optimierung umwandelt, aber wenn wir nicht von so einer schlauen Optimierung ausgehen, ist der erste Code aufwendiger.
Im zweiten Teil haben wir 1 Zuweisung, 2 Vergleiche und eine boolsche Operation. Das alles sind Kernelemente der Sprache, die sich ziemlich direkt nach C abbilden lassen (in der der Ruby-Interpreter geschrieben ist).
Im ersten Teil haben wir 2 verschachtelte Arrays. Das bedeutet Ruby wird vermutlich erst einmal Array-Objekte erzeugen, wofür er Speicher reservieren muss. Dann haben wir zwei Methodenaufrufe, das bedeutet Nachschlagen in der Funktionstabelle der Array-Klasse und einen geringen Overhead durch den Aufruf (Rücksprungadresse, lokale Variablen).
Die Frage ist ob die min- und max-funktionen, die ja mit beliebig großen Arrays funktionieren, spezielle Implementierungen für 2-Elementige Arrays haben, wo dann eine einfache If-Abfrage ausreicht. Falls nicht, beinhalten die Aufrufe Schleifen-Konstrukte, die ein wenig aufwendiger sein könnten als eine reine If-Abfrage.
Man darf nicht vergessen, If-Konstrukte gibt es in so gut wie jeder Programmiersprache, Objekte und Methodenaufrufe nur in Objektorientierten Sprachen - und OOP-Sprachen sind in der Regel immer langsamer als prozuderale Sprachen. Das erzeugen und verwalten von Objekten und der Aufruf von Methoden hat also immer gewisse Kosten, die eine If-Abfrage nicht hat.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln