カテゴリ| Flexの開発

フレックスXMLのデータグリッドは、パフォーマンスを向上するには+

2007年7月27日ジュリアンLestelで

すべてのFlexのプログラマーの質問:どのような大規模なXMLデータファイルを読み込むために、 DataGridのかの4つの方法を用いて表示し、マシン上でのパフォーマンス...ソース: http://philflash.inway の最速の方法です。 com / dgperf / index.htmlを

方法1 )ノット、 XMLConnector図とDatabindingと古典 XMLConnectorの回路図とDataBindingと方法2の属性は、 方法3属性、パース、 XMLとDataprovider 方法4属性、パース、 XMLと商品
Flash Playerを7 12 388ミシシッピ 11 963ミリ秒 2 930ミシシッピ 442ミリ秒
Flash Player 8が 9 365ミシシッピ 7 569ミシシッピ 1 858ミシシッピ 314ミリ秒

問題の詳細

多くのユーザーのパフォーマンスについてのFlex 4の方法でファイルを読み込むために文句をXML.Voici分類:

方法1

のデータを表現するために、我々のノードを使用します。 クライアントとして表現される以下の通り: <client><nom>Deschamps</nom><prenom>Amandine</prenom><ville>Caluire-Et-Cuire</ville><age>43</age><ca>2173.7</ca></client>フラッシュ>については、 ( 1図を使用してファイルを読むこと)は、指定されたデータセットとは、 DataGridのデータを表示するためのモデルにはXMLConnectorを使用します。 にバインドするためには、 3 éléments.C 'メソッドは、 " "多くのチュートリアルで発見されているデータリンククラシック( DataBinding )を使用します。

なぜ、この方法をゆっくりとは何ですか?

315キロバイトは、 XMLファイルのサイズがあります。 XMLConnector時にスキーマを使用して、フラッシュファイルにアクセスするためのdonnées.LeのXPathを使用して、 XPathのが遅くなる:これは、長い大きい。 は12.5秒になる。

方法2

この方法のアイデアの属性ノード(代わりに)を使用するようにして表現されるお客様への影響を参照してくださいperformances.Unは以下の通りです: <client nom="Deschamps" prenom="Amandine" ville="Caluire-Et-Cuire" age="43" ca="2173.7"/>フラッシュ<client nom="Deschamps" prenom="Amandine" ville="Caluire-Et-Cuire" age="43" ca="2173.7"/>については、方法1のように: (そのスキーマをインポートする)ファイルを読む際に、指定されたデータセットとしてXMLConnector同じ方法を使用モデルとは、データグリッドのデータが表示されます。 にバインドするためには、 3要素のデータリンク( DataBinding )を使用します。

なぜ、この方法を方法1よりも高速ですか?

は、 XPathの" "の属性は、ノード( )にアクセスするには速いです。 メモには、 XMLをもっと" 315キロバイトの代わりに小さい" ( 164 KB )のです。 12秒約マン...

方法3

のデータを表現するために、このメソッドの使用attributs.LアイデアXMLConnectorのレイアウトを使用する(これは、 XPathの)を使用してではなく、パーサーを手動XML.Pourこの、私たちは" " XMLを素早く読む: nextSiblingではwhile ループを使用します。 数字をエンコードするためには、 番号を使用する(およびparseFloatは遅いです) parseIntされていません。 databindingこれ以上ありませんXMLConnectorとデータセットの間にされています。 にバインドするためのXML構文解析の結果は、 DataSetのDataprovider使用しています。

なぜ、この方法を方法2よりも高速ですか?

これを手動でXML解析を実行します。 それはもはや(と) XMLConnectorのスキーマを使用していないして、 XPathを使用します。戦としては、エンコーダの属性をする必要があります。 ほとんどのXMLデータでは、文字列や数値されています。 のエンコーディングが非常に速い。 テスト3秒間続きます。

方法4

方法3では、非常に迅速には、 XMLを読む知っている。 この方法のアイデアかどうか( ) Dataprovider 3のメソッドを使用して、データリンクを向上させることができる場合は、 DataSetのドキュメントを見て、その DataSetにデータを関連付ける2つの方法:この方法がありますDataproviderとメソッドの項目が、何が多すぎることではないの詳細は、 アイテムDataprovider ?のFlash MX 2004のドキュメントは、 Flash 8 LiveDocsかの違いです。 このため、データセットのソースを見てください:スキーマがある場合ですフラッシュ8 :マクロメディア\フラッシュ8 \アン\最初の実行\クラス\ MXの\ データ \ コンポーネント \データセット。 Asen実際、メソッドDataprovider型変換を実行する(メソッドinternalAddItem ) 。 項目法変換(なし/チェックタイプ)の直接リンクになります。すでに変換したが、それは法の項目を使用します。 (方法3では、型変換)が必要ではありませんでした。このコードは以下の通り:

client_con.addEventListener("result", Delegate.create(this, doParseData));//function doParseData():Void {var dataXML:XML = client_con.results;var resultArray:Array = [];var mainNode = dataXML.firstChild;var aNode:XMLNode = mainNode.firstChild;while (aNode) {var obj = new Object();for (var attribute:String in aNode.attributes) {if (attribute == “age” || attribute == “ca”) {obj[attribute] = Number(aNode.attributes[attribute]);} else {obj[attribute] = aNode.attributes[attribute];}}resultArray.push(obj);aNode = aNode.nextSibling;}// — use items (and not dataProvider)client_ds.items = resultArray;} ) : [ ] ; client_con.addEventListener("result", Delegate.create(this, doParseData));//function doParseData():Void {var dataXML:XML = client_con.results;var resultArray:Array = [];var mainNode = dataXML.firstChild;var aNode:XMLNode = mainNode.firstChild;while (aNode) {var obj = new Object();for (var attribute:String in aNode.attributes) {if (attribute == “age” || attribute == “ca”) {obj[attribute] = Number(aNode.attributes[attribute]);} else {obj[attribute] = aNode.attributes[attribute];}}resultArray.push(obj);aNode = aNode.nextSibling;}// — use items (and not dataProvider)client_ds.items = resultArray;} = client_con.addEventListener("result", Delegate.create(this, doParseData));//function doParseData():Void {var dataXML:XML = client_con.results;var resultArray:Array = [];var mainNode = dataXML.firstChild;var aNode:XMLNode = mainNode.firstChild;while (aNode) {var obj = new Object();for (var attribute:String in aNode.attributes) {if (attribute == “age” || attribute == “ca”) {obj[attribute] = Number(aNode.attributes[attribute]);} else {obj[attribute] = aNode.attributes[attribute];}}resultArray.push(obj);aNode = aNode.nextSibling;}// — use items (and not dataProvider)client_ds.items = resultArray;} ] client_con.addEventListener("result", Delegate.create(this, doParseData));//function doParseData():Void {var dataXML:XML = client_con.results;var resultArray:Array = [];var mainNode = dataXML.firstChild;var aNode:XMLNode = mainNode.firstChild;while (aNode) {var obj = new Object();for (var attribute:String in aNode.attributes) {if (attribute == “age” || attribute == “ca”) {obj[attribute] = Number(aNode.attributes[attribute]);} else {obj[attribute] = aNode.attributes[attribute];}}resultArray.push(obj);aNode = aNode.nextSibling;}// — use items (and not dataProvider)client_ds.items = resultArray;} Dataprovider client_con.addEventListener("result", Delegate.create(this, doParseData));//function doParseData():Void {var dataXML:XML = client_con.results;var resultArray:Array = [];var mainNode = dataXML.firstChild;var aNode:XMLNode = mainNode.firstChild;while (aNode) {var obj = new Object();for (var attribute:String in aNode.attributes) {if (attribute == “age” || attribute == “ca”) {obj[attribute] = Number(aNode.attributes[attribute]);} else {obj[attribute] = aNode.attributes[attribute];}}resultArray.push(obj);aNode = aNode.nextSibling;}// — use items (and not dataProvider)client_ds.items = resultArray;}

ここに12.5秒から0.5秒に満たない2 000 録音ファイルを読むこと移動するための方法です!

Flexの場合には初めてになるinfo.frは、 RSSフィードを購読することができます。 ご訪問していただきありがとうございます。

1 étoile2 étoiles3 étoiles4 étoiles5 étoiles (評価無しけれども)
Loading ... 読み込んでいます...

この記事に1コメント

  1. momowell言う:
    13

    ハワイ
    私はそれが良い方法ですが、参照する代わりにflexのプロジェクトに入れている。 モイ帝n'yパス到着!

コメントを書く

登録

  • 私のAOLに追加
  • Googleに追加
  • Zuneのに追加
  • Netvibesのに追加
  • テクノラティに追加
  • 私のヤフーに追加
  • Zuneのに追加

調査

どのようにして、新しいのFlex - info.fr を見つけるのですか?

結果を見る

Loading ... 読み込んでいます...

Mugsho

オンラインとは?

翻訳

French flagItalian flagChinese (Simplified) flagEnglish flagGerman flagSpanish flagJapanese flagRussian flagDutch flag