Instabile Sortierung in JavaScript

Wenn ich in einem sozialen Netzwerk einen Beitrag zu einem ähnlichen Thema sehe, sind fast immer viele Kommentare dieses Typs darunter:

  • Warum müssen Sie wissen, ob es integrierte Sortiermethoden gibt?

  • Warum das Rad neu erfinden?

  • Es ist notwendig, ein Interview zu bestehen, objektiv besteht keine Notwendigkeit mehr, es zu wissen

  • In "jeder Javascript-Engine" sind sie nicht dumm und haben bereits alles richtig gemacht

Und ich selbst habe immer genauso gedacht, bis ich als Frontend-Entwickler zu einem der Rostelecom-IT-Teams kam. Gemeinsam stießen wir auf einen sehr interessanten Fall: Es war notwendig, ein Widget zu erstellen, das in die Informationssysteme aller unserer makroregionalen Niederlassungen eingebettet werden kann, und die Arbeit der Betreiber bei der Auswahl des optimalen Tarifs zu vereinfachen.

Auf den Punkt

Was wird Ihrer Meinung nach passieren, nachdem dieser Code ausgeführt wurde? In der Zwischenzeit müssen Sie nichts darüber wissen. “

Es scheint nichts Seltsames, aber es gibt Nuancen.

Fallnummer mal

, , , unit-. - . . -, . , Node.js 10, , . , , . , — . , , , , .

. Node , Node, 11, . . Node 12, .

: Google Chrome 80 , 69 — . , . 

  • ,

  • Release notes Google Chrome 

  • , Google Chrome 69 — , 6- V8

  • Release notes V8

  • 6 7 V8

Getting things sorted in V8, , 7- V8 TimSort, QuickSort. , , - .

Node.js 10.22 ( V8 v6.8) QuickSort.​

​ , , 0.

Node.js 14.5 ( V8 v7.0) TimSort.​

​ .

? , JavaScript. Node.js , . 

, . BlockSort (wikisort). , , , , .

:

  • lodash.sortby

  • WikiSort javascript (WikiSort)

  • QuickSort V8 (node.js 10.22.0)

  • TimSort V8 (node.js 14.5.0)

10 , 100 . 

​ : , V8, WikiSort TimSort, . lodash

sort-test-js, — Tihon-Ustinov/sort-test-js

?

JavaScript

Node.js

11.0.0

2018-10-23

V8 7.0.276.28

+

Node.js

10.22.0

2020-07-21

V8 6.8.275.32

-

Google Chrome

70.0.3538

2018-10-16

V8 7.0.276

+

Google Chrome

69.0.3497

2018-09-04

V8 6.9.427

-

  • « JavaScript»,

  • ,

  • ,

  • , ,




All Articles