2009-07-15 8 views
16

Quali sono i pro e i contro dell'utilizzo di Vector.<> anziché array?Vector. <> Vs array

+0

Come nota a margine, questo dovrebbe essere contrassegnato come flex4 flashplayer10. –

risposta

19

Dal adobe documentation page:

Come risultato di queste restrizioni, un vettore presenta due vantaggi principali rispetto a un'istanza Array i cui elementi sono tutti istanze di una sola classe:

  • Rappresentazione: array accesso dell'elemento e l'iterazione è molto più veloce quando si utilizza un'istanza Vector rispetto a quando si utilizza una matrice.
  • Tipo di protezione: in modalità rigorosa il compilatore può identificare errori di tipo di dati, ad esempio assegnare un valore del tipo di dati errato a un vettore o prevedere il tipo di dati errato durante la lettura di un valore da un vettore. Si noti, tuttavia, che quando si utilizza il metodo push() o il metodo unshift() per aggiungere valori a un vettore, i tipi di dati degli argomenti non vengono controllati in fase di compilazione ma vengono controllati in fase di esecuzione.
+3

Grazie Arno! Questi sono solo i pro, ci sono anche alcuni contras? Per quanto riguarda le prestazioni migliori di Vector: alcune persone segnalano il contrario: vedere http://impossiblearts.com/blog/2008/06/18/fp10-vector-vs-array/comment-page-1/ e http://bugs.adobe.com/jira/browse/FP-1802 –

+0

Sembra che le prestazioni potrebbero non essere il miglior punto vendita per i vettori al momento. Quindi, di nuovo, si dovrebbe essere già abituati al fatto che sia il framework di Flex che il flash player non sono privi di bug. –

+0

I grandi contras sono secondo me molto nuovi, quindi un po 'buggy e non tutti hanno FP10. In questo test di Mike Chambers: http://www.mikechambers.com/blog/2008/08/19/using-vectors-in-actionscript-3-and-flash-player-10/ nel suo test non è un hugh differenza tra i 2 numeri. Se la tua applicazione non è pesantemente appesa a grandi liste, andrei con Array. – Arno

2

Pro: il vettore è più veloce della matrice - ad es. vedere questo: Faster JPEG Encoding with Flash Player 10

Contra: vettore richiede FP10, e secondo http://riastats.com/ circa il 20% degli utenti sta ancora utilizzando FP9

+0

Al momento di questo commento, la versione non rilevata + lampeggia 9 orologi al 4% – ADB

+0

non rilevati e lampeggia 9 orologio in poco meno del 5% oggi. –

1

L'esempio di elenco collegato menzionato in precedenza nei commenti è scritto in modo errato anche se salta i nodi dispari e per questo solo itera la metà degli stessi dati. Non c'è da stupirsi che ottenga risultati così grandi, potrebbe essere più veloce con il codice corretto, ma non la stessa differenza di%. Il loop imposta current = current.next una volta troppo (sia nel ciclo che come condizione del ciclo) ogni iterazione che causa quel comportamento.