2017-07-24 1 views
-2

In Javascript gibt es zwei Lösungen, um die sort() Funktion zu schreiben, eine Reihe von Zahlen in aufsteigender Reihenfolge zu sortieren.Sortieren Array von Zahlen mit arithmetischen Operatoren vs Vergleichsoperator

var numbers = [2, 10, 2, 6, 4]; 
// first solution 
numbers.sort((a, b) => a - b); // [2, 2, 4, 6, 10] 

// second solution 
numbers.sort((a, b) => a > b); // [2, 2, 4, 6, 10] 

Welcher ist besser oder schneller zu verwenden?

Antwort

3

Der sort Rückruf muss einen Wert < 0, 0 oder> 0, das Rück keine boolean. > zu verwenden ist einfach falsche. Wie es die Leistung oder Korrektheit des Sortieralgorithmus beeinflusst, hängt von der Implementierung ab (d. H. Unterschiedliche Engines können unterschiedliche Ergebnisse zeigen).

+0

Aber mit> gibt mir immer noch das gewünschte Ergebnis. Wie ist es falsch? –

+1

Sie deklarieren alle Fälle, in denen "a deceze

-1

In C würden wir immer a - b über a > b bevorzugen, da Letzteres einen Pipeline-Dump aufgrund eines Fehlers im Verzweigungsprädiktor verursachen kann.

In Javascript, jedoch nicht Mikro-Optimierung auf dieser Ebene. Schreibe, was am deutlichsten ist. Besser noch, verwenden Sie die Out-of-the-Box-Lösung.

0

In Bezug auf die Leistung habe ich eine jsPerf Schnipsel gemacht, der Boolesche Operator scheint schneller zu sein.

PD: Verwenden von Google Chrome-Version 59.0.3071.115 (Build Oficial) (64 Bit)

Verwandte Themen