Clasificación inestable en JavaScript

Cuando veo una publicación sobre un tema similar en cualquier red social, casi siempre hay muchos comentarios de este tipo debajo:

  • ¿Por qué necesita saber esto si hay métodos de clasificación integrados?

  • ¿Por qué reinventar la rueda?

  • Es necesario pasar una entrevista, objetivamente ya no hay necesidad de saberlo

  • En "cualquier motor de JavaScript" no son tontos y ya lo han hecho todo bien

Y yo mismo solía pensar de la misma manera hasta que llegué a uno de los equipos de TI de Rostelecom como desarrollador frontend. Juntos nos encontramos con un caso muy interesante: era necesario crear un widget que pudiera integrarse en los sistemas de información de todas nuestras sucursales macrorregionales y simplificar el trabajo de los operadores en la selección de la tarifa óptima.

Directo al grano

¿Qué crees que pasará después de que se ejecute este código? Mientras tanto, no hay necesidad de preocuparse por eso ".

Parece que nada extraño, pero hay matices.

Número de casos veces

, , , 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