2009-07-15 26 views

Odpowiedz

19

Z adobe documentation page:

W wyniku tych ograniczeń Vector charakteryzują dwie podstawowe zalety instancji Array, której elementy są wszystkie wystąpienia jednej klasy:

  • Wydajność: tablica dostęp elementem i iteracja jest znacznie szybsza w przypadku użycia instancji Vector niż w przypadku korzystania z Array.
  • Bezpieczeństwo typu: w trybie ścisłym kompilator może zidentyfikować błędy typu danych, takie jak przypisanie wartości nieprawidłowego typu danych do wektora lub oczekiwanie niewłaściwego typu danych podczas odczytu wartości z wektora. Zauważ jednak, że przy użyciu metody push() lub metody unshift() w celu dodania wartości do wektora, typy danych argumentów nie są sprawdzane w czasie kompilacji, ale są sprawdzane w czasie wykonywania.
+3

Dzięki Arno! To tylko plusy, czy są też jakieś contras? W odniesieniu do lepszej wydajności Vector: niektórzy ludzie twierdzą, że jest inaczej: patrz http://impossiblearts.com/blog/2008/06/18/fp10-vector-vs-array/comment-page-1/ i http://bugs.adobe.com/jira/browse/FP-1802 –

+0

Wygląda na to, że wydajność może nie być obecnie najlepszym punktem sprzedaży wektorów. Z drugiej strony, należy już przyzwyczaić się do faktu, że zarówno sdks, jak i Flash Player z Flexa nie są wolne od błędów. –

+0

Duże kontrakty są moim zdaniem bardzo nowe, więc są trochę powikłane i nie wszyscy mają 10. PR. W tym teście Mike Chambers: http://www.mikechambers.com/blog/2008/08/19/using-vectors-in-actionscript-3-andflash-player-10/ w jego teście nie jest hugh różnica między 2 liczbami. Jeśli twoja aplikacja nie jest mocno zawieszona na dużych listach, poleciałabym z Array. – Arno

2

Pro: wektor jest szybszy niż tablica - np. zobacz: Faster JPEG Encoding with Flash Player 10

Contra: Vector wymaga FP10 i według http://riastats.com/ około 20% użytkowników nadal używa FP9

+0

W czasie tego komentarza, niewykryta wersja + flashuje 9 zegarów przy 4% – ADB

+0

niewykrytych i flashu 9 w dzisiejszym czasie prawie 5%. –

1

Podany wcześniej przykład listy powiązanej jest niepoprawnie zapisany, ale pomija węzły nieparzyste i dlatego tylko iteruje połowę tych samych danych. Nic dziwnego, że osiąga świetne wyniki, może być szybszy z poprawnym kodem, ale nie z tą samą różnicą%. Pętla ustawia current = current.next jeden raz za dużo (zarówno w pętli, jak i warunek pętli), każda iteracja powodująca takie zachowanie.