Discussion:
WildcardQuery-Erzeugung in neueren Lucene-Versionen langsamer
(zu alt für eine Antwort)
Christoph Schneegans
2016-03-15 17:00:59 UTC
Permalink
Hallo allerseits!

Gegeben sei folgender Code:

@Test
public void performance()
throws Exception
{
for (int i = 0; i < 100_000; i++)
{
new org.apache.lucene.search.WildcardQuery(
new org.apache.lucene.index.Term("foo", "foo*"));
}
}

Ich stelle hier erhebliche Unterschiede in der Laufzeit fest:

• Mit Lucene 3.4.0 läuft dieser Code in 0,026 s durch.
• Mit Lucene 4.10.4 benötigt er schon 0,549 s.
• Und mit Lucene 5.5.0 benötigt er gar 2,601 s.

Ich habe bei meinen Tests auch nicht den Eindruck, daß Lucene 4.x und
5.x die investierte Zeit später, also bei der /Ausführung/ der Query,
wieder reinholen.

Die WildcardQuery wurde ja in 4.x als AutomatonQuery re-implementiert.
http://de.slideshare.net/otisg/finite-state-queries-in-lucene spricht
nun (auf Slide 9) von "improved performance", ganz im Gegensatz zu
meinen Erfahrungen.

Übersehe ich irgendwas Offensichtliches?
--
<http://schneegans.de/computer/safer/> · SAFER mit Windows
Marcel Mueller
2016-03-15 21:09:31 UTC
Permalink
Post by Christoph Schneegans
@Test
public void performance()
throws Exception
{
for (int i = 0; i < 100_000; i++)
{
new org.apache.lucene.search.WildcardQuery(
new org.apache.lucene.index.Term("foo", "foo*"));
}
}
• Mit Lucene 3.4.0 läuft dieser Code in 0,026 s durch.
• Mit Lucene 4.10.4 benötigt er schon 0,549 s.
• Und mit Lucene 5.5.0 benötigt er gar 2,601 s.
Die haben halt die Nutzung der Systemressourcen optimiert. Die neuen
Versionen nutzen die Systemressourcen wesentlich effektiver aus als die
alten. ;-)
Post by Christoph Schneegans
Ich habe bei meinen Tests auch nicht den Eindruck, daß Lucene 4.x und
5.x die investierte Zeit später, also bei der /Ausführung/ der Query,
wieder reinholen.
Das wird halt auch davon abhängen, über welche Datenmenge er nachher
drüber rutschen muss.

Einen Overhead von 26µs für eine Volltext-Suchanfrage finde ich jetzt
nicht in irgendeiner Weise so beeindruckend, als dass sich darüber
irgendeine Diskussion lohnt.
Post by Christoph Schneegans
Übersehe ich irgendwas Offensichtliches?
Was ist den das eigentliche Problem? Geht es den Kunden zu langsam? Hat
der Server nicht mehr genug CPU-Kerne, um die Anfragen zu bearbeiten?
Irgendetwas anderes?

Und hast Du mal getestet, ob nicht das Initialisieren der (größer
gewordenen) Bibliothek das ist, was langsamer geworden ist? Also mal
eine Anfrage vorher im Setup machen, was nicht zur Zeit dazu zählt.


Marcel
Christoph Schneegans
2016-03-16 11:29:47 UTC
Permalink
Post by Marcel Mueller
Post by Christoph Schneegans
• Mit Lucene 3.4.0 läuft dieser Code in 0,026 s durch.
• Mit Lucene 4.10.4 benötigt er schon 0,549 s.
• Und mit Lucene 5.5.0 benötigt er gar 2,601 s.
Was ist den das eigentliche Problem?
Wir haben einige automatisierte Performance-Prüfungen, die nach dem
Wechsel der Lucene-Version erhebliche Verschlechterungen attestierten.
Ich habe aber zunehmend den Eindruck, daß diese Prüfungen reale
Suchanfragen nicht besonders gut abbilden. Wahrscheinlich renne ich
gerade einem Phantom hinterher...

Bestimmte Anfragen, die per
org.apache.lucene.index.AtomicReader#terms(String) direkt auf Terme
eines Feldes zugreifen, laufen nun sogar erheblich schneller.
Post by Marcel Mueller
Und hast Du mal getestet, ob nicht das Initialisieren der (größer
gewordenen) Bibliothek das ist, was langsamer geworden ist? Also mal
eine Anfrage vorher im Setup machen, was nicht zur Zeit dazu zählt.
Okay. Auch mit Warmlaufen ändern sich die Meßergebnisse nicht wesentlich.

Das soll mir aber vorerst genügen. Danke für deine Antwort!
--
<http://schneegans.de/lv/> · Validator für BCP 47
Lesen Sie weiter auf narkive:
Suchergebnisse für 'WildcardQuery-Erzeugung in neueren Lucene-Versionen langsamer' (Newsgroups und Mailinglisten)
44
Antworten
Welche Alternative zu KDE4?
gestartet 2010-05-19 08:10:02 UTC
linux.debian.user.german
51
Antworten
Bester Desktop für Debian? Keine Glaubensfrage...
gestartet 2012-02-12 09:40:02 UTC
linux.debian.user.german
32
Antworten
PHP in Java
gestartet 2006-01-02 21:19:07 UTC
de.comp.lang.java
44
Antworten
Welche Alternative zu KDE4?
gestartet 2010-05-19 07:52:42 UTC
debian-user-german@lists.debian.org
48
Antworten
[OT] Dokumentation erstellen
gestartet 2005-07-26 19:07:24 UTC
de.comp.lang.java
Suchergebnisse für 'WildcardQuery-Erzeugung in neueren Lucene-Versionen langsamer' (Fragen und Antworten)
12
Antworten
Was ist ein gutes Setup für ein 'Catcher'-Pokémon in X / Y?
gestartet 2013-12-09 14:24:27 UTC
gaming
19
Antworten
Ist es üblich, Entwicklern in Organisationen lokalen Desktop- und / oder Active Directory-Administratorzugriff und -Rechte zu gewähren?
gestartet 2018-07-16 07:06:12 UTC
sicherheit
5
Antworten
Software zur Textsuche in GROSSEN Dateien (E-Books)
gestartet 2014-03-09 08:19:10 UTC
softwareempfehlungen
3
Antworten
Schliessen Sie auf fehlende UTR-Funktionen in der GFF3-Datei
gestartet 2017-12-29 23:49:41 UTC
bioinformatik
7
Antworten
So beheben Sie effektiv einen Riss in einer gedrehten Schüssel
gestartet 2015-03-19 08:35:41 UTC
holzbearbeitung
Nicht verwandte, aber interessante Themen
8
Antworten
Eröffnung als Anfänger: Mainlines oder Off Beaten Path?
gestartet 2017-11-30 21:07:31 UTC
6
Antworten
Ist es jemals sinnvoll, auf Zeit zu warten?
gestartet 2012-05-24 18:38:13 UTC
6
Antworten
Anfängerfrage: Der Doppelbauern
gestartet 2015-09-15 00:00:25 UTC
5
Antworten
Suche nach einer Möglichkeit, den d5-Push nach 1. d4 Sf6 zu „bestrafen“
gestartet 2017-04-16 15:58:10 UTC
8
Antworten
Schockierende Königinopfer?
gestartet 2016-03-07 15:18:13 UTC
Loading...