| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
| Preformance Problem in For-Schleife (XML Verarbeitung)
Hallo zusammen. Ich hätte da mal ne Frage bezüglich Preformanceoptimierung. Ich lade eine große Anzahl an XML-Einträgen aus meiner Datenbank (momentan 1500+ Einträge mit jeweils ca 85 Werten) Die Daten werden in Flash auch sehr zügig geladen. Allerdings muss ich die Daten ja noch weiterverarbeiten... Wenn ich die Daten über eine Schleife einen Objekt zuweise und dieses in ein Array packe dauert die Zuweisung ca 10 Sekunden. Ohne die Schleife dauert der Vorgang (Daten laden + einer XML in Flash zuweisen) weniger als eine Sekunde... Gibt es eine Möglichkeit die Daten schneller zu verarbeiten? Anbei mal mein momentanes Vorgehen. PHP-Code: Ich habe mir schon überlegt die entsprechenden Zuweisungen so zu reduzieren, das diese nur für das jeweilige Produkt passen. Dann hätte ich keine undefined-Werte und müsste auch weniger schreiben. Allerdings dauert die Zuweisung mit nur 10 Zuweisungen auch noch über eine Sekunde und ein Produkt hat min. 30 Zuweisungen. Gibt es eine bessere Möglichkeit die Daten aus der XML (bzw. aus dem HTTPService) den Objekten zuzuweisen? Oder sollte ich mich jeweils auf das Notwendigste beschränken und dafür viele verschiedene Zuweisungsschleifen erstellen? MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #2 (permalink) |
| in the boondocks Registriert seit: Feb 2006 Ort: Augsburg
Beiträge: 3.496
|
80 x 1500? das sind dann ja 120.000 Anweisungen. Du zeigst doch nie und nimmer 1500 Produkte auf einmal. Reduzier dass im ersten Durchlauf auf die sichtbaren Produkte und mach nur bei Bedarf einen weiteren Durchlauf oder den Rest asynchron. Außerdem solltest du eine Klasse für das Produkt erstellen. Das dürfte dann auch nochmal schneller sein als Object. mfg sx |
| | |
| | #3 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
und nicht mehrmals das selbe rechnen lassen Code: var ec = ergebnisXML.children();
var anz = ec.length();
for(var i:int=0; i<anz; i++){ // da geht z.b. auch 'for each'
var eci = ec[i];
produkt = {};
produkt.id = eci.id.toString(); // toString() ? sollte das nicht value() sein?
produkt.produkt = eci.produkt.toString();
produkt.bearbeiter = eci.bearbeiter.toString();
produkt.datum = eci.datum.toString();
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (04-01-2012 um 17:30 Uhr) |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Jul 2003
Beiträge: 1.197
|
Achtung: Code ist direkt ins Forum getippt, komplett ungetestet PHP-Code:
__________________ EDV = Ende Der Vernunft |
| | |
| | #5 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
|
Ich würde die Schleife eher so schreiben (und ggf. für produkt eine eigene Klasse definieren)*: ActionScript:
Es ist ja grade Sinn und Zweck einer Datenbank, dass man mit ihr schnell und sicher, serverseitig große Datenbestände durchsuchen kann und dann nur noch die Daten an die Ausgabe (in diesem Fall der Flash-Client) überträgt, die dieser auch wirklich benötigt. Deine Datenstruktur sieht auch nicht so aus, als würden da mehr als ein dutzend Einträge gleichzeitig angezeigt?! Edit: *hmpf war da schneller
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! Geändert von Martin Kraft (04-01-2012 um 17:39 Uhr) |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Danke erstmal für eure Antworten! Ich werde mich morgen damit beschäftigen und versuchen eure Tipps umzusetzen. Zu der Datenmenge: doch, ich benötige die Daten. Ich habe eine "Suche" die "rückwärts" läuft und so nur Treffer ausgibt. D.h., dass der Anwender eine ComboBox mit vorhandenen Werten zu einer Eigenschaft hat und anhand seiner Auswahl werden wiederum andere Auswahlmöglichkeiten beschränkt. Geht man z.B. von den allgemeinen Daten aus kann der Anwender nach einer Kundennummer suchen und die Auswahl der Produkte reduziert sich auf die Produkte, die dem Kunden zugewiesen sind. So reduziert sich die Trefferanzahl mit jedem Filtersetzen. Das Ganze ist allerdings sehr komplex, sodass ich die entsprechenden Daten nicht erst bei Bedarf laden kann (ich weiß ja nicht was der Anwender auswählen möchte). Das mit der Datensicherheit stellt für mich kein Problem dar da das Ganze nur im Firmennetzwerk läuft. Ich melde mich dann nochmal wie ich mit euren Tipps zurecht komme ![]() Einen schönen Abend noch! MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #7 (permalink) | |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| Zitat:
(Das ist jetzt nicht wirklich schön) aber sieh Dir z.B. mal geizhals.at an. Da hast Du relativ komplexe Filtermöglichkeiten, die entsprechende der Vorauswahl ausgedünnt werden. Und das ganze funktioniert rein serverseitig auch ohne JS.
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! | |
| | |
| | #8 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
|
Wenn jedoch unbedingt bei dieser wir-schaufeln-alles-auf-den-Client-Lösung bleiben willst (wovon ich Dir abrate), solltest Du...
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Bei dem Projekt möchte ich gerne bei XML bleiben. Aber die Tipps haben mich auf eine neue Idee gebracht: Die XML ist ja sehr schnell (auch mit den großen Datenmengen) erstellt und ich gebe standardmäßig bei mehr als einem Ergebnis pro ComboBox ein "*" aus. Ich werde morgen mal die Zuweisung ComboBox-abhängig machen. Dann werden die Daten erst zugewiesen wenn man ein CB auch auswählt. Ich weiß nur noch nicht wie es dann mit der Filterfunktion (beschänkung der Auswahlmöglichkeiten) funktioniert. Aber das seh ich dann wenn ich es probiere ![]() Danke nochmal für eure Mühe und tolle Hilfestellung. Irgendwann kann ich hoffentlich auch hier guten Support zurückgeben. Aber momentan ist alles noch "gefährliches Halbwissen aus tausend und einem Blog". MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #10 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Ich würde AMF/Objekte nutzen. Das geht alles im Client ohne Probleme. Aber da wiederhole ich mich ja nur...
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Hallo zusammen. Ich habe jetzt das Produkt in eine Klasse ausgelagert nach der Vorlage von hmpf. Allerdings musste ich mit einer XML statt einer XMLList arbeiten. Mit der Verwendung der Klasse habe ich schon gute 4 Sekunden Ladezeit gespart (von ursprünglich ca 10 Sekunden). Da ich die Daten nach dem Zuweisen noch filtere (doppelte Einträge lösche), ist dort noch ein großes Optimierungspotential. Nächste Woche werde ich ran gehen und versuchen die Abläufe zu optimieren um eine möglichst gute Preformance raus zu bekommen. ![]() MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #12 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Man braucht das XML nicht zu kapseln. Besser ist es direkt in Felder zu schreiben und dann das XML wegzuwerfen. Und du sparst keine Lade- sondern Rechenzeit.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Problem bei Verarbeitung der XML | Flasher81 | ActionScript 2 | 4 | 19-03-2010 14:52 |
| Neues Problem: Textarea und Verarbeitung | Noir0x | Server-Seite allgemein | 4 | 26-04-2008 12:30 |
| Preformance-Problem und load Movie | kakktus | Flash MX | 2 | 11-03-2005 17:12 |
| Preformance - Brauche Hilfe! | sebezahn | Flash MX 2004 | 4 | 25-09-2004 00:30 |
| preformance: as-bewegungen vs. tweens | mAtze_s | Flash MX | 3 | 10-01-2004 16:52 |