2009-07-15 9 views

答えて

19

その制約の結果として、ベクターは、エレメントがすべて単一クラスのインスタンスであるArrayインスタンス上の2つの主要な利点があります。

  • パフォーマンス:配列要素へのアクセスをベクトルインスタンスを使用する場合は、配列を使用する場合よりもはるかに高速です。
  • 型の安全性:厳密なモードでは、不正なデータ型の値をVectorに割り当てる、またはVectorから値を読み取るときに間違ったデータ型を予期するなど、データ型エラーをコンパイラが識別できます。ただし、push()メソッドまたはunshift()メソッドを使用してVectorに値を追加すると、引数のデータ型はコンパイル時にはチェックされず、実行時にチェックされることに注意してください( )。
+3

ありがとうArno!これらは唯一のプロですが、いくつかのコントラもありますか? より良いパフォーマンスについて:一部の人々は反対を報告しています。http://impossiblearts.com/blog/2008/06/18/fp10-vector-vs-array/comment-page-1/とhttp: /bugs.adobe.com/jira/browse/FP-1802 –

+0

これは、パフォーマンスが現在のベクターにとって最高のセールスポイントではないように見えます。もう一度、FlexフレームワークSDKとFlash Playerの両方がバグフリーではないという事実に既に慣れているはずです。 –

+0

大きなコントラは私の意見では非常に新しいので少しバギーで、誰もがFP10を持っているわけではありません。 Mike Chambersのこのテストでは:http://www.mikechambers.com/blog/2008/08/19/using-vectors-in-actionscript-3-and-flash-player-10/彼のテストではヒューではない2つの数字の違い。あなたのアプリケーションが大きなリストに大きくぶら下がっていなければ、私はArrayを使うでしょう。 – Arno

2

Pro:ベクターの方が配列より高速です。これを参照してください。

Faster JPEG Encoding with Flash Player 10コントラ:ベクターFP10を必要とし、利用者の約20%が、まだそれが少し高くなっているFP9

+0

このコメントの時点で、検出されなかったバージョン+フラッシュ9は4% – ADB

+0

で検出され、フラッシュ9クロックは今日ではわずか5%下にあります。 –

2

のベクトルの周りに高速です。連続的な繰り返しの場合はthe fastest thing seems to be linked-listsです。

ベクターは、ビットマップ操作(BitmapData.setVectorもチェックし、BitmapData.lockもアンロック)にも役立ちます。

1

前述のコメントのリンクリストの例は、奇数ノードをスキップしても間違って記述されています。そのため、同じデータの半分だけが反復されるためです。彼がすばらしい結果を得たのも不思議ではないが、正しいコードでも速くなるかもしれないが、同じ%の違いではない。ループは、その動作を引き起こす各繰り返しをcurrent = current.nextに1回(ループとループ条件の両方で)あまりにも多く設定します。

関連する問題