Path: csiph.com!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Christoph Schneegans Newsgroups: de.comp.lang.java Subject: WildcardQuery-Erzeugung in neueren Lucene-Versionen langsamer Date: Tue, 15 Mar 2016 18:00:59 +0100 Lines: 34 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net jGt8ZFx7x4AzFUUoStw+RA6g3c7o0iOr6q972PjWJv1vTqvA== Cancel-Lock: sha1:UAjp8OKBFDo0GGd6YphU3Odpv9w= X-Mozilla-News-Host: news://news.individual.de:119 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 Xref: csiph.com de.comp.lang.java:12910 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? -- · SAFER mit Windows