was ist schneller und/oder ressourcenschonender?
hugo
- javascript
Hallo,
ich parse den Dokumentenbaum, um je nach eingabe in ein formularfeld nur noch die passenden treffer anzuzeigen. dies funktioniert auch wunderbar.
nun möchte ich das ganze natürlich möglichst effizient umsetzen, deshalb meine frage:
macht es einen unterschied, wenn ich jedesmal den kompletten baum (na ja nicht den kompletten baum sondern schon den entsprechenden unterbaum) durcharbeite, oder ist es evtl. schneller, wenn ich die elemente in ein array/object speichere und dann dieses abarbeite oder gibts einen anderen weg das besser zu lösen?
vg hugo
ich parse den Dokumentenbaum, um je nach eingabe in ein formularfeld nur noch die passenden treffer anzuzeigen. dies funktioniert auch wunderbar.
Geht es um eine dokumentinterne Suche?
macht es einen unterschied, wenn ich jedesmal den kompletten baum (na ja nicht den kompletten baum sondern schon den entsprechenden unterbaum) durcharbeite, oder ist es evtl. schneller, wenn ich die elemente in ein array/object speichere und dann dieses abarbeite oder gibts einen anderen weg das besser zu lösen?
Kommt ganz darauf an. Was genau hast du vor? Wie sieht der Baum aus und wie und durchsuchst du ihn? Was für Daten suchst du genau? Kannst du nicht die Rohdaten direkt in einem Array speichern? Wieso Elemente?
Am schnellsten ist natürlich, wenn du die Rohdaten bereits in einer JS-Struktur hast. Dann kannst du das Durchsuchen selbst optimieren (je nach Datentyp gibts besser Möglichkeiten als die lineare Suche).
Eine linearer Array mit Elementen (wie ihn elementobjekt.getElementsByTagName("*") liefert) ist natürlich auch besser als eine DOM-Hierarchie, die du rekursiv durchlaufen musst.
Für das schnelle Durchlaufen des DOM anhand gewisser Kriterien eignen sich NodeIterator und TreeWalker - z.B. wenn du nur alle Textknoten suchst.
Erzähle einfach mal, was du vorhast, ansonsten lässt sich deine Frage nur grob mit »Kommt darauf an« beantworten. ;)
Mathias
Hallo,
Geht es um eine dokumentinterne Suche?
ja.
Kommt ganz darauf an. Was genau hast du vor? Wie sieht der Baum aus und wie und durchsuchst du ihn? Was für Daten suchst du genau? Kannst du nicht die Rohdaten direkt in einem Array speichern? Wieso Elemente?
es gibt eine treffermenge, die nach plz durchsucht werden soll. diese sind gruppiert nach den ersten zwei zahlen der plz. dazu habe ich einen div um die entsprechenden elemente, dieser hat dann die ersten 2 zahlen als id.
innerhalb dieses divs gibt es dann links, die haben eine id die aus der plz(komplett) und einer eindeutigen id zusammengesetzt durch _ bestehen.
im formularfeld wird per onkeyup eine funktion aufgerufen, die divs im ergebnisbereich überprüft, ob die id zum eingegebenen wert passt oder nicht und ggf. ausgeblendet. zusätzlich werden die links in den divs überprüft ob diese passen und ggf. ebenso eingeblendet (bzw. wieder eingeblendet, wenn man ein zeichen löscht).
Am schnellsten ist natürlich, wenn du die Rohdaten bereits in einer JS-Struktur hast. Dann kannst du das Durchsuchen selbst optimieren
die daten kommen aus einer csv-datei, die durch php geparst wird. ich wollte nicht noch zusätzlich eine js-struktur schreiben, deshalb hab ich den o.g. weg gewählt.
Erzähle einfach mal, was du vorhast, ansonsten lässt sich deine Frage nur grob mit »Kommt darauf an« beantworten. ;)
hoffe das reicht als erklärung und danke schon mal.
ach ja - die daten bestehen aus name und ort ohne plz, so dass textknoten nicht durchsucht werden können.
vg hugo
Hi,
es gibt eine treffermenge, die nach plz durchsucht werden soll. diese sind gruppiert nach den ersten zwei zahlen der plz. dazu habe ich einen div um die entsprechenden elemente, dieser hat dann die ersten 2 zahlen als id.
Hoffentlich nicht nur diese, denn das wäre eine ungültige ID.
Am schnellsten ist natürlich, wenn du die Rohdaten bereits in einer JS-Struktur hast. Dann kannst du das Durchsuchen selbst optimieren
die daten kommen aus einer csv-datei, die durch php geparst wird. ich wollte nicht noch zusätzlich eine js-struktur schreiben, deshalb hab ich den o.g. weg gewählt.
Die JS-Datenstruktur kannst du dir ja auch nach dem Laden des Dokumentes dynamisch erstellen.
MfG ChrisB
im formularfeld wird per onkeyup eine funktion aufgerufen, die divs im ergebnisbereich überprüft, ob die id zum eingegebenen wert passt oder nicht und ggf. ausgeblendet.
Von welcher ID redest du hier? Der zweistellige PLZ-Präfix, die eindeutige ID oder beides in einer HTML-ID?
zusätzlich werden die links in den divs überprüft ob diese passen und ggf. ebenso eingeblendet (bzw. wieder eingeblendet, wenn man ein zeichen löscht).
Nach was soll man suchen können? Nach PLZ-Anfängen? Oder nach den zusammengesetzen Gesamt-IDs, und zwar alle, die mit der eingegebenen beginnen?
Mathias
Hallo,
| im formularfeld wird per onkeyup eine funktion aufgerufen, die divs im ergebnisbereich überprüft, ob die id zum eingegebenen wert passt oder nicht und ggf. ausgeblendet.
Von welcher ID redest du hier? Der zweistellige PLZ-Präfix, die eindeutige ID oder beides in einer HTML-ID?
bspw. PLZ-Bereich 45 dann habe ich
<div id="plz_45">
<a href="..." id="fa_45123_120">Fa.1</a><br />
<a href="..." id="fa_45329_126">Fa.2</a><br />
</div>
| zusätzlich werden die links in den divs überprüft ob diese passen und ggf. ebenso eingeblendet (bzw. wieder eingeblendet, wenn man ein zeichen löscht).
Nach was soll man suchen können? Nach PLZ-Anfängen? Oder nach den zusammengesetzen Gesamt-IDs, und zwar alle, die mit der eingegebenen beginnen?
man sucht nach der plz; d.h. ich gebe 4 ein und sehe nun nur noch alle 2-stelligen bereiche, die mit 4 beginnen, ich gebe 453 ein, dann sehe ich den bereich 45 und in diesem nur noch die links, die die plz 453xx haben.
vg hugo