Próbuję się dowiedzieć, co jest bardziej występujące:

let array = [1,2,3,4]
array.includes(4)

Lub

let str = "1234";
str.includes(4);

I próbowałem go znaleźć, wykonując:

console.time();
let ar = [1,2,3,4,5];
ar.includes(4);
console.timeEnd();

console.time();
let str = "12345";
str.includes("4");
console.timeEnd();

W konsoli i skryptu na stronie. Podczas bezpośredniego wykonania z konsoli, czasy są takie, że macierz. Podczas wykonywania strony zgłoszone czasy są takie, że sznurek. Co daje?!

21
shashanka n 27 czerwiec 2017, 07:28

3 odpowiedzi

Najlepsza odpowiedź

z małą liczbą wartości do testowania przed :

Wniosek: array.includes jest szybszy niż string.includes

Następnie próbowałem zwiększyć liczbę wartości do ~ 100 :

Zakończył się tym samym wynikami: array.includes jest szybszy niż string.includes


Jeśli jesteś zainteresowany algorytmem wdrożeniowym, możesz na to spojrzeć tutaj:


PS: W twoim przypadku uważam, że deklaracja zmiennej zajmuje więcej czasu w terenie instrulues TEST niż deklaracja strunowa. Jeśli przeniesiesz deklarację z timera, należy również zobaczyć spójne wyniki.

Dowód: dowód

Deklaracja ciągów trwa 1/10 czasu, aby zadeklarować tablicę

9
Aftab Khan 27 czerwiec 2017, 05:46

Przetestowałem z ciągami zamiast liczby, ponieważ jeden ważny element jest numer 1 / String Conversion w procesie.

array.includes vs string.includes comparison

Tablica jest nadal znacznie szybsza ...

Oto mój 2 sprawa testowa

var ar = ['a','b','c', 'd', 'e'];
var str = "abcde";

test jsfiddle.

0
grobouDu06 22 sierpień 2019, 07:52

W oparciu o testy benchmarku na różnych platformach przeglądarki wszystko zależy od silnika JavaScript i elementów wykonawczych na tych platformach (Windows, Mac lub Ubuntu)

Chrome on Mac OS uzyskał Array.includes szybciej niż String.includes dobrze na Safari Mac OS był przeciwny. (Jsperf.com Testase utworzone przez @shashanka n )

I węzeł V8.0.0 na Mac OS {X0}} pojawia się szybszy niż Array.includes z wynikiem jak poniżej

enter image description here

Kod źródłowy testu węzłów:

let ar = [1,2,3,4,5];
console.time("Array");
ar.includes(4);
console.timeEnd("Array");

let str = "1,2,3,4,5";
console.time("String");
str.includes("4");
console.timeEnd("String");

Powyższy testcase na Chrome Wprowadź opis obrazu tutaj

Czasami niejednoznaczność testowa może powodować różne wyniki. Nie ma zdecydowanej metody, aby przypiąć wydajność API, wszystko, co możemy, możemy oszczędzić milisekundom i żyć z tym, dopóki nie będzie tak sprawy lub utrudnia wydajność w większej skali.

3
Nirus 27 czerwiec 2017, 06:14