Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

ECMA 5 vs vecchia scuola. Cosa dicono le performance?

Alcuni test sulle nuove funzionalità di ECMA 5 mostrano come con esse non vi siano vantaggi per le performance di JavaScript.
ECMA 5 vs vecchia scuola. Cosa dicono le performance?
Alcuni test sulle nuove funzionalità di ECMA 5 mostrano come con esse non vi siano vantaggi per le performance di JavaScript.
Link copiato negli appunti

In un recente articolo postato su Hackernoon, l'autore Yotam Kadishay ha proposto un'analisi su alcune delle più "recenti" funzionalità di JavaScript. Con i metodi forEach, reduce, map e filter, che permettono di iterare un array in una maniera (standard) più produttiva, il codice è diventato più semplice e leggibile.

Nello stesso tempo NodeJS ha cambiato il modo di intendere JavaScript, che da linguaggio client-side è divenuto una soluzione both sides. Utilizzando gli ultimi standard ECMA e il motore V8, NodeJS si sta facendo strada nel campo delle soluzioni server-side.

Ma come si chiede Yotam, utilizzare Javascript in questo modo, avvalendosi di caratteristiche "out-of-the-box" come i menzionati metodi dell'oggetto Array, è positivo per le performance di un'applicazione? Per rispondere a questo quesito l'autore ha testato alcuni snippet in situazioni limite ma reali, utilizzando NodeJS v10.11.0 con Google Chrome e su sistema operativo macOS.

Loop sugli array

Il primo test è stato eseguito con un array contenente 10 mila elementi, una situazione reale in cui il programma interroga un database comprensivo di diverse righe in tabella, eseguendo una somma dei suddetti elementi. La comparazione è stata effettuata con gli operatori/funzioni: for, for-of, while, forEach e reduce.

For Loop, average loop time: ~10 microseconds
For-Of, average loop time: ~110 microseconds
ForEach, average loop time: ~77 microseconds
While, average loop time: ~11 microseconds
Reduce, average loop time: ~113 microseconds

I nuovi metodi ECMA non sono quindi la soluzione più performante in termini di esecuzione del codice. Questo perché sia forEach che reduce richiedono un callback da eseguire ad ogni iterazione.

Duplicazione di un array

Anche nell'operazione di duplicazione di un array (10 mila array di 10 mila elementi ciascuno) risulta più veloce ed economico utilizzare i cari vecchi slice e concat:

Duplicate using Slice, average: ~367 microseconds
Duplicate using Map, average: ~469 microseconds
Duplicate using Spread, average: ~512 microseconds
Duplicate using Conct, average: ~366 microseconds
Duplicate using Array From, average: ~1,436 microseconds
Duplicate manually, average: ~412 microseconds

Iterazione sugli oggetti

L'iterazione sugli oggetti è ormai uno scenario molto comune, come nel caso di operazioni su JSON. Il test, eseguito su iterazioni relative a 10 mila oggetti rileva:

Object iterate For-In, average: ~240 microseconds
Object iterate Keys For Each, average: ~294 microseconds
Object iterate Entries For-Of, average: ~535 microseconds

For-in della vecchia scuola "vince". La conclusione a cui giunge Yotam è chiara: le nuove soluzioni "super cool" targate ECMA possono essere fino a 10 volte più lente rispetto alle soluzioni del passato.

Via Yotam Kadishay

Ti consigliamo anche