Zurück   Flashforum > Flash und Server > Flash mit XML und Webservices

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-07-2002, 01:16   #1 (permalink)
Her mit dem Gesöff
 
Benutzerbild von Sokraflash
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 63
XML Objekt durchlaufen: Je größer das Objekt, desto langsamer der Durchlauf

Hallo zusammen.

Für eine CD, die etwas mehr als 10000 Adressdatensätze enthält, erstelle ich grade eine kleine Anwendung, die nach PLZ selektiert zu verschiedenen Bereichen ein paar Adressdaten ausspuckt. Das klappt soweit auch ganz gut in Flash MX. Offenbar hat Flash aber große Probleme, wenn sehr viele Datensätze in einer Node gespeichert werden.

Da die Daten nach PLZ in aufsteigender Reihenfolge sortiert sind, kann ich mittels binärer Suche die beiden Indices bestimmen zwischen denen die gesuchten Datensätze liegen. Zum Beispiel soll das Programm alle Datensätze zwischen PLZ = 50000 und PLZ = 60000 ausgeben. Also rufe ich meine Funktion

ActionScript:
  1. min = binarySearch(a.childNodes, 50000);
  2. max = binarySearch(a.childNodes, 60000);

Wunderbar, jetzt weiss ich also z.B. das meine betreffenden Datensätze zwischen 6312 und 6404 liegen, also muss ich die Node nur noch in diesem Bereich durchlaufen:

ActionScript:
  1. for (z = min; z <= max; z++)
  2. {
  3.  trace(a.childNodes[z]);
  4. }

die childNodes in a sind in meiner XML-Struktur verschieden groß. Einige haben nur 100 Einträge, eine bestimmte Node hat aber über 10000. Wenn ich nun ca. 100 Datensätze an beliebiger Stelle durchlaufe, dann dauert es über 10 Sekunden bei der "großen" Node. Bei andere nur einen Bruchteil einer Sekunde. Wenn ich einfach mal 9000 Datensätze aus der XML-Datei in dieser Node lösche dann wird es auch wieder schneller.

Was hat das zu bedeuten? Sollte es nicht gleich schnell sein, egal an welcher Stelle ich 100 Datensätze in einem Array durchlaufe? Hat Flash hier wirklich Probleme wenn man nur ein paar 1000 Indices hat? Gibt es einen Trick?

Rein technisch sehe ich dafür kaum einen Grund. Schliesslich sollte der Interpreter wirklich nur einen Pointer auf Speicherbereiche verwalten, wenn man ein Array durchläuft. Wahrscheinlich hat Flash mal wieder ein "effizienteres" Modell.

Wer weiss Rat?

Gruß
__________________
Sokraflash
Hexatex Holistic-Webdesign
Sokraflash ist offline   Mit Zitat antworten
Alt 29-07-2002, 08:08   #2 (permalink)
-=|=-
 
Registriert seit: Jul 2001
Ort: münchen
Beiträge: 776
ich hab nicht ge´rade eine lösung für dein problem, hab' aber ein ähnliches phänomen:

wenn ein node wiel daten ernthält, zum beispiel einen längeren text dann setzt der player beim laden kurz aus. das äussert sich so, dass das fenster kurz nicht mehr auswählbar ist und alles stockt. eine animation zum beispiel bleibt kurz stehen...........

der xml-austausch klappt zwar in flash, hat aber doch wohl noch einige macken.

jazz
jazz ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele