Salve, visto l'insuccesso dello scorso quesito (che dovrei aver risolto scrivendo più codice per distruggere e controllare piuttosto che che per creare) ne pongo un altro.

Situazione:
carico dei dati dal server, sono tanti ... cioè non tantissimi ma abbastanza da creare problemi al player.

trattasi di un paio di migliaia di contatti, caricati in LoadVars e suddivisi, per ogni contatto, in circa una decina di informazioni.

L'operazione di parsing, tramite il benchmark da me effettuato, dura circa 1 secondo sul mio Centrino 1.6, sicuramente non l'ultimo e veloce processore ma per me ancora buono.

Il ciclo che impegna la CPU è fatto così

codice:
// codice all'interno di un onLoad
var a:Number = 0;
while(this["info" + a]) {
	// parsa ed assegna valori
	++a; // ++a va più veloce di a++ su loop "consistenti"
}
il codice è semplice, funziona alla perfezione ma su un PC non molto potente (un Mac non recente, un Pentium 3 e probabilmente altri) fa scattare "l'allarme" al player con una finestra di dialogo che dice:

"Questo movie sta effettuando un loop infinito, fermare le operazioni ?"


Dopo aver dato sfogo a tutte le mie risorse per ottimizzare e velocizzare il parsing, senza ottenere risultati differenti, mi è venuta in mente una cosa "stupida", ovvero prendere in giro il Flash Player.

Come ? Semplicemente switchando da while a for il loop, sapendo che più di 5.000 risultati non potranno esserci (l'idea era questa: "ora non può pensare che sia un loop infinito").

codice:
for(var a:Number = 0; a < 5000; a++) {
	if(this["info" + a]) {
		// parsa ed assegna valori
	}
	else
		a = 5000; // termina il loop
}
Ora, sebbene sembra che il problema sia risolto, scopo sempre primario, questa soluzione non mi sembra ne troppo coerente ne troppo pulita e soprattutto non mi sembra portabile o scalabile.

Qualcuno di voi sa se esiste un modo per dire al player che si è certi che il loop while non è infinito o conosce un modo scalabile per affrontare la questione ?


Grazie


[edit]
operazioni tentate prima del for:
1 - usare array e join per concatenare le stringhe (in JS è più veloce, in AS nemmeno tanto)
2 - usare proprietà predefinite in un array per evitare di riconcatenare ogni parametro
3 - usare una funzione "a steps", ovvero in grado di fare il while ed uscire di 100 in 100, o 500 in 500
4 - mettere su caffè, fumare 12 sigarette, pulire il fornello dal caffè strabordato, bruciato e bollito
5 - altro ancora ...