2009-03-27 15 views
12

Abbiamo alcuni dati (10-50 colonne, centinaia di migliaia di righe) che di solito visualizziamo in Excel come un grafico a linee o un grafico a barre in pila.
Gli utenti vogliono essere in grado di ingrandire e ridurre il grafico per arrivare ai singoli campioni, ma questo tipo di operazioni mette davvero in ginocchio Excel.JavaScript è pronto per la visualizzazione di set di dati di grandi dimensioni?

Sto pensando di incorporare i dati in una pagina HTML, con JavaScript inline per gestire la visualizzazione nel browser. Qualcosa come il flottaggio della JS per la creazione di grafici sarebbe sfruttato per i grafici.

  1. È un'idea stupida?
  2. Il browser è pronto per questo tipo di carico?
  3. Si tratta di un problema risolto che avrei dovuto cercare su Google prima di chiedere?
+0

Canvas, WebGL e HTML5 API - sì! I browser sono pronti per questo ora! –

risposta

9

Javascript è probabilmente pronto per questo, dal momento che javascript stessa ha ottenuto di essere abbastanza veloce. Nella mia esperienza i browser sono generalmente non pronti a gestire strutture DOM molto grandi. Come minimo, puoi aspettarti di passare molto tempo a cercare di capire perché le cose sono lente. Scoprirai inoltre che molte librerie javascript "standard" (prototype/jquery vengono in mente) non sono adatte per lavorare con strutture DOM eccessivamente grandi.

Prepararsi a scoprire che una determinata operazione è lenta su tutti i browser, ma alla fine risulta essere per 3-4 motivi diversi sui diversi browser. Questo si basa sull'esperienza derivante dal lavorare con DOM moderatamente sovradimensionati. Mentre è certamente possibile, costerà una buona quantità di lavoro per ottenere un risultato decente.

+0

Canvas, WebGL e HTML5 API - sì! I browser sono pronti per questo ora! –

4

JavaScript è pronto per la visualizzazione di set di dati di grandi dimensioni?

Sì, il linguaggio è in un punto in cui, senza problemi, nell'ambiente giusto, gestisce i recordset significativi e li manipola, visualizza, ecc. Il linguaggio stesso va bene.

È un'idea stupida?

No, in effetti è possibile contare su quasi tutti i computer per poter eseguire questo linguaggio capace e multipiattaforma.

Il browser è pronto per questo tipo di carico?

Alcuni potrebbero essere: dipende dall'elaborazione e dalle azioni effettivamente eseguite. Con Chrome che utilizza un motore javascript veloce e sempre più persone fanno affidamento su di esso, la guerra di velocità javascript viene attivata. Penso che questo sia uno scenario d'uso perfettamente valido.

Avrai bisogno di essere preparato per il benchmarking e l'ottimizzazione, il che significa scavare nelle viscere di javascript. Si prega di pubblicizzare i risultati in modo da poter riparare le carenze.

-Adam

6

Consiglio vivamente ad Adam di eseguire alcuni benchmark e ottimizzazione. Recentemente ho lavorato sul tracciamento di set di dati di grandi dimensioni con Flot e ho sperimentato prestazioni meno che accettabili con Internet Explorer (ad esempio, l'intero browser che pendeva da ~ 20 secondi sul mio box di sviluppo mentre tracciava i grafici).

Flot utilizza l'elemento canvas per il grafico supportato solo da Internet Explorer 9+. Flot fornisce supporto per le versioni precedenti di Internet Explorer utilizzando la libreria ExplorerCanvas. Questa libreria usa VML, disegnando grafici manipolando elementi VML attraverso il DOM.

Utilizzo di Internet Explorer 8 script profiler Ho scoperto la maggior parte del tempo impiegato per eseguire il rendering della trama, chiamando il numero nativo insertAdjacentHTML method per creare gli elementi VML. Poiché non c'era nulla che potesse essere fatto per migliorare le prestazioni delle chiamate ai metodi nativi, ho invece lavorato sulla riduzione del numero di punti dati tracciati (riducendo a sua volta gli elementi VML creati nel DOM) per ottenere prestazioni accettabili.

Se non si necessita o si cura del supporto per le versioni precedenti di Internet Explorer quando si dovrebbe trovare Flot/Flotr è in grado di gestire dataset di grandi dimensioni. Ma se hai bisogno di supportare queste versioni, preparati a incorrere in problemi di prestazioni durante la creazione di set di dati di grandi dimensioni.

+0

+1 -> Alcuni link molto utili lì; Grazie Simone! –

+0

Ho scoperto che il mio browser cadrà se tenterò di rendere Flot un semplice grafico a linee con 10k punti, quindi si consiglia vivamente di utilizzare lo zoom + la funzionalità AJAX. – pr1001

Problemi correlati