Poiché sto cercando di trovare una libreria di grafici veloce per mostrare i grafici sui dispositivi mobili, le prestazioni sono state importanti per me. Doveva anche avere una licenza che ne consentisse l'uso commerciale. Ho confrontato:
- c3, che si basa su d3 e quindi utilizza SVG
- chart.js che utilizza canvas
I grafici vengono caricati all'interno di un componente WebView all'interno di un'app nativa e tutti i dati (inclusa la libreria JS) sono locali, quindi nessun rallentamento dovuto alle richieste http. Per massimizzare ancora di più le prestazioni, inserisco tutto in un unico file.
Ho caricato 4 grafici (linea, barra, torta, linea / barra combinata) con circa 500 punti dati insieme.
La mia misurazione del tempo escludeva il caricamento effettivo della pagina html. Ho misurato dal momento in cui ho iniziato a utilizzare il codice della libreria di grafici fino alla fine del rendering. Tutta l'animazione del grafico è stata disattivata.
C3 ha impiegato circa 1500-1800 ms sui moderni dispositivi Android e IPhone. iPhone ha funzionato circa 100 ms meglio di Android.
Chart.js ha impiegato circa 400-800 ms. Android ha funzionato circa 300 ms meglio di iPhone.
Nessuna sorpresa, l'SVG è più lento. A seconda del tuo caso d'uso, forse troppo lento.
Su un computer desktop il rendering in c3 era di circa 150-200 ms e chart.js di circa 80-100 ms. L'esecuzione dello stesso test nell'emulatore Android e iPhone ha avuto lo stesso risultato del desktop. Quindi il rallentamento sui dispositivi mobili è sicuramente dovuto ai limiti hardware / di elaborazione.
Spero possa aiutare