Perché array.push () a volte richiede più tempo in Javascript con Google Chrome

1

Qualche tempo fa ho realizzato un semplice script in Javascript che ha verificato quanto tempo ci vuole per aggiungere elementi agli array. Ho usato 3 metodi diversi: array.push() , array[array.length] e array[x] dove x è il contatore nel ciclo for. Questi risultati sono stati memorizzati e disegnati su un semplice grafico utilizzando la tela. Lo script potrebbe fondamentalmente funzionare per sempre, prendendo i tempi medi per ogni ciclo.

Dopo alcune ore ho iniziato a notare qualcosa di strano nel grafico. il metodo array.push() ha avuto un picco piuttosto "casuale" nel tempo impiegato per aggiungere tutti gli elementi. Di per sé non è troppo strano, ma ciò che è strano è che dopo aver aggiunto ancora più elementi con push , il tempo totale è sceso di nuovo.

Quando il tempo aumenta, siamo a circa 96.000 elementi . Quando il tempo diminuisce, colpiamo 107.000 elementi . Il tempo totale supera nuovamente lo spike dopo circa 183.000 elementi . Gli altri metodi hanno anche piccoli picchi in alcuni punti, ma non grandi come il push spike.

C'è uno screenshot di quello che sembrava dopo 364 test.

Epercolorochevoglionovedereilcodiceoeseguirlodasoli: link JSFiddle

Perché succede? Cosa potrebbe causare l'improvviso aumento e diminuzione nel tempo?

    
posta ThijmenDF 22.07.2016 - 08:55
fonte

1 risposta

2

Dai un'occhiata a questo articolo.

gestione della memoria di array Javascript

È simile alla gestione della memoria .NET negli elenchi. Devi sempre impostare la dimensione iniziale di un elenco (o qualsiasi altra raccolta, per quella materia) per evitare un comportamento non ottimale dalle prestazioni e dal punto di vista dell'utilizzo della memoria.

    
risposta data 22.07.2016 - 09:12
fonte

Leggi altre domande sui tag