Re: Mehr Speed?
"Dieter Maurer" <[email protected]>
| Newsgroups | gmane.comp.web.zope.german |
|---|---|
| Message-ID | <[email protected]> |
Michael Hierweck wrote at 2009-4-2 21:16 +0200: >Dieter Maurer wrote: >> >> Plone bindet schon "AdvancedQuery" ein. >> Es kann "IncrementalSearch2" nutzen, wenn es installiert ist. >> Gleiches gilt für "Products.AdvancedQuery" und "dm.incrementalsearch". > >gibt es einen vernünftigen Grund dies nicht zu tun bzw. dafür, dass >"IncrementalSearch" nicht Upstream und Default ist? Ja. "IncrementalSearch" (reines Python) ist für einige von "Oder" Komponenten dominierte Suchen langsamer als die Standard-Suche. Das liegt daran, dass die Standard-Suche auf C-Implementierungen zugreift, die um mehrere Größenordnungen schneller sind als die entsprechenden Python-Operationen. "IncrementalSearch2" (und "dm.incrementalsearch") (C Implementierungen) ist immer mindestens so schnell wie die Standard-Suche (und in vielen wichtigen Fällen viel schneller), läuft aber nicht unter Windows. Grund ist vermutlich, dass meine C-Implementierung Erweiterungen des GNU-C-Präprozessors nutzt (oder einige Windows-Only Shared-Library-Deklarationen vergisst). Ich selbst habe eine starke Abneigung gegen Microsoft und möchte keinesfalls Investitionen tätigen, die den Umsatz von Microsoft erhöhen. Vor daher sind von mir keine Anstrengungen zu erwarten, "IncrementalSearch2/dm.incrementalsearch" Windows kompatibel zu machen. Aber ich bin bereit, Hilfestellung zu leisten, wenn jemand anderes dies tun möchte. Hinzu kommt: die Indexe müssen helfen, dass "IncrementalSearch2" sein Potential ausschöpfen kann: Die teilweise drastische Beschleunigung kommt daher, dass die Objekt-Id-Listen zu einem Suchbegriff nicht vollständig gelesen werden sondern nur so weit, wie für die Suchausführung benötigt. Dadurch werden viel weniger Ladeoperationen nötig, was die Gesamtsuchzeit dominiert (wenn die Daten nicht schon im ZODB Cache sind). Wenn der Index aber die gesamte Objekt-Id-Liste gelesen hat, dann kann "IncrementalSearch2" nicht mehr viel machen. Also: "IncrementalSearch2" funktioniert mit beliebigen Indexes; damit es aber einen signifikanten Geschwindigkeitsgewinn gibt, müssen die Indexe interne "Und/Oder/Nicht" Operationen mit Hilfe von "IncrementalSearch2" realisieren. Meines Wissens nach tun dies bisher nur die "ManagableIndex"e. Das oben gesagte gilt analog für "dm.incrementalsearch". -- Dieter _______________________________________________ zope mailing list [email protected] https://mail.dzug.org/mailman/listinfo/zope