[Talk-de] Neuer Namefinder
Sascha Silbe
sascha-ml-gis-osm-talk-de at silbe.org
Di Aug 19 21:51:47 UTC 2008
On Mon, Jul 28, 2008 at 12:15:16AM +0200, Frederik Ramm wrote:
>> * Namefinder: Meistens äre man schneller, das Lexikon
>> durchzublättern.
> Der Namefinder ist ein Hobbyprojekt von David Earl. Keine Ahnung, wie
> effizient der programmiert ist. Schreib einen besseren Namefinder, und
> ich bin sicher, er wird auf der Startseite eingebunden.
Ich habe das mal zum Anlass genommen, meine Erfahrung beim Bauen eines
Routers für OSM-Daten für etwas zu verwenden, das in absehbarer Zeit
für "die Community" brauchbar ist. Sprich: Ich habe einen neuen
Namefinder geschrieben.
Ein direkter, fairer Vergleich mit dem "alten" Namefinder ist schwierig,
da Netzwerk-Overhead hinzukommt und der komplette Frontend-Code (incl.
Parsen des Suchstring + Formatieren der Antwort) noch fehlt. Deshalb nur
zwei Beispiele (jeweils die 2. Antwort, damit wir nicht die
Festplatten-, sondern die Verarbeitungsgeschwindigkeit messen):
alt neu
Beethovenweg 0.681s 0.008970s
random string (=> 0 Ergebnisse) 0.310s 0.000352s
Übrigens Respekt an David Earl, das Teil ist wesentlich schneller, als
ich bei PHP+MySQL erwartet hätte.
Die gute Nachricht: der IMO schwierigste Teil, nämlich der in C(++)
implementierte Suchkern, ist fertig (zumindest was die Features angeht,
die auch der "alte" Namefinder hat) und hinreichend schnell.
Die schlechte Nachricht: es hat (wie üblich :) ) viel mehr Zeit
gekostet als eingeplant war und ich sollte mich jetzt dringend um
wichtigere Dinge kümmern. Wenn mir jemand hilft und die Frontend-Seite
übernimmt, könnte der bisherigen Namefinder in naher Zukunft ersetzt
werden (wobei der derzeit recht flott läuft - Grund für den Austausch
wären da eher neue Features als schnellere Suche). Ansonsten dauerts
halt ein bisschen länger, bis der Code fertig ist. :)
Um mal ein paar Zahlen zu nennen:
Rahmenbedingungen: planet-080813.osm.gz, Athlon 64 BE-2300 dual-core
1.9Ghz, 4GB DDR2-800, Limit 100 Wege + 100 Nodes pro Schritt:
Datenbankgröße: ~8GB
Import: 206 Minuten
Startup: 41 Sekunden
RAM-Bedarf nach Start (-> Namen und Hashtabellen): 501MB
Namenssuche ("Provenceweg", exakt): 0.001117s
loc search (48.51 9.07 48.52 9.08): 0.061777s
exakter Name + loc: 0.001331s
loc + exakter Name: 0.005612s
Namenssuche ("Provenceweg", regex): 2.582227s
loc + regex: 0.232248s
exakter Name + loc (ganze Welt): 2.263841s
loc (ganze Welt): 0.069157s
Namenssuche ("Provenceweg", Substring): 0.600431s
Ich habe noch ein paar Optimierungsideen für bestimmte Spezialfälle
(insb. für Name+große BBox), aber IMO sind die Werte ganz OK.
Insbesondere die häufigsten Fälle (exakter Name + loc) sind recht
flott.
Zu finden ist der Code in meinem Arch-Repository [1] unter
osmsearch--devel--0.1 (ein toller Name ist mir bisher nicht
eingefallen). Die restlichen zum Betrieb nötigen Dateien (für
genTagTypeMap.py) sind unter [2-4] zu finden.
[1] http://sascha.silbe.org/arch/sascha-arch@silbe.org--2008
[2] http://sascha.silbe.org/tmp/osmsearch.conf
[3] http://sascha.silbe.org/tmp/nodesDisplay.rules
[4] http://sascha.silbe.org/tmp/waysDisplay.rules
CU Sascha
--
http://sascha.silbe.org/
http://www.infra-silbe.de/
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 481 bytes
Beschreibung: Digital signature
URL : <http://lists.openstreetmap.org/pipermail/talk-de/attachments/20080819/17f24361/attachment.sig>
Mehr Informationen über die Mailingliste Talk-de