Newsgroup: it.comp.lang.javascript
Titolo: quanto grande può essere una tabella per essere agevolmente manipolata?

Gira e rigira, l'argomento dei miei post rimane la manipolazione delle 
tabelle.
Consideriamo una tabella minimale (nel numero di colonne), con la prima 
colonna intestata a un campo data, la seconda e un campo numerico e la 
terza a un campo testuale (dichiamo lunghezza massima intorno ai 50 
caratteri).
Se volessi manipolare via javascript la tabella (essenzialmnete per 
operazioni di ordinamento e nascondimento record [righe] secondo filtri 
impostati dall'utente in apposite caselle), quanto posso spingermi in là 
nella dimensione?
1.000 righe?
10.000 righe?
100.000 righe?
1.000.000 righe?
Ovviamente faccio conto di avere sempre il contenuto disponibile in una 
variabile array, poi la visualizzazione può avvenire anche qualche 
decina di righe per volta.
 
 

 nella dimensione?
 
Non c'è una misura fissa. Dipende dall'hardware della macchina in
primis, e dopo quella dal sistema operativo, e poi dal browser usato. La
regola è: tieniti comunque più basso possibile. Ad esempio anni fa, su
IE6 e macchine Windows XP di cui non ricordo assolutamente la
configurazione, non andavo oltre le 300.
 
Buttala anche su un discorso di design: troppe dati equivalgono a nessun
dato. Nel mio caso "300" era considerato il numero massimo di
informazioni che potevi recuperare in una botta sola, se non ti dava ciò
che volevi allora miglioravi i filtri di ricerca. Alla fine anche google
funziona così, raramente ti spingi a leggere tutte le pagine che ti da
come risultati, se non trovi ciò che cerchi nelle prime raffini la ricerca.
 
Puoi anche usare una tecnica di buffering, ma anche lì va visto il
browser: In pratica come nei videogiochi (e come fa cloud9), dai
l'impressione di avere una tabella lunghissima, quando visualizzi solo
un numero ridotto di celle, che sono quelle che stanno nel viewport, più
una manciata di altre; e poi le aggiorni in base allo scrolling. Ma ti
vai a impelagare in un bel casino, devi vedere se ne vale la pena.
 
Se tu hai tutti i tuoi dati in una struttura JS, allora eviterei di
avere una visualizzazione completa di tutta la tabella – magari puoi
generarla on demand dal server per questioni di "stampa" ad esempio – ma
visualizzare solo i dati che corrispondono a un certo criterio. Quindi
in memoria hai tutti i dati (struttura JS), ma visualizzi solo un
massimo di un centinaio di risultati ogni volta che l'utente filtra,
aggiungendo qualcosa tipo "La ricerca ha prodotto più di 200 risultati,
si suggerisce di rifinire le parole chiavi" nel caso i risultati siano
più di quelli che visualizzi.
 
So che non risponde esattamente alla tua domanda, ma è il consiglio e
risposta più sensata che mi viene da darti al momento.
 
 

 massimo di un centinaio di risultati ogni volta che l'utente filtra,
 
D'accordo. Ma quanto può essere grande la struttura JS? JS in esecuzione 
dentro FF su un pc tipico (faccio per dire, XP o 7 con 4Gb ram, la 
velocità di esecuzione non mi interessa) regge un array di 10.000 
elementi? di 1.000.000 di elementi?
 

 elementi? di 1.000.000 di elementi?
 
Dipende dagli elementi e dalla struttura, ovviamente. Un array di una
stringa da un carattere occupa meno memoria di un array di oggetti
complessi. Va da sé che più la struttura è grande, più diventa lungo e
lento lavorarci sopra.
 
Non ci sono "dati" per questo genere di cose, dipende dalla tua
struttura e dal codice. La cosa migliore è che tu faccia uno stress test
per la tua specifica casistica.