2009-10 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
2009-10-06 Tue
→ Bad Benchmarks
Eine goldene Regel beim Benchmarken: immer prüfen, ob
die geprüften Funktionen tatsächlich das Gleiche zurückgeben! Ich habe
einen alten, bislang nur im RCS lebenden
Benchmark (miscsrc/strassen_benchmark.pl) ausgegraben und ins
git-Repository verschoben. Dieser Benchmark hat immer behauptet, dass
die Strassen::Storable-Implementation langsamer als die normale Strassen
oder eine DB_File-Variante ist. Leider war dieser Benchmark immer schon
falsch gewesen: die Schleife über alle Datensätze hatte einen
fehlerhafte Bedingung und ist schon nach dem ersten Datensatz
ausgestiegen.
Nachdem der Benchmark korrigiert wurde, ergibt sich ein völlig anderes
Bild: DB_File/RECNO ist nun mit Abstand am langsamsten, dann folgen die
Pure-Perl-Varianten (wobei sowohl die Streaming-Variante als auch die
normale Variante sich nicht groß unterscheiden), und schließlich als
Schnellstes die Storable-Variante. Also lohnt es sich vielleicht doch,
die Storable-Variante (z.B. für binäre BBBike-Distributionen) zu
verwenden.
2009-08-04 Tue
→ Umzug zu git
Das Haupt-Repository von BBBike ist ab sofort als
git-Repository bei github erreichbar:
Clone-URL: git://github.com/eserte/bbbike.git
Webseiten: http://github.com/eserte/bbbike
Intern habe ich schon seit einigen Monaten git verwendet und mit
git-cvsimport und git-cvsexportcommit von und zum CVS-Repository bei
SourceForce synchronisiert. Wegen Bugs in der git-cvs-Brücke (genauer:
in cvsps, welches von git-cvsimport verwendet wird) funktioniert aber
diese Synchronisation nicht mehr. Deshalb die Flucht nach vorne.
Das alte CVS-Repository werde ich aber in unregelmäßigen Abständen
weiterhin up-to-date halten. Wahrscheinlich werde ich dafür die alte
RCS-CVS-Brücke etwas umbauen.
2009-08-02 Sun
→ "Eigentlich ein Knoten"
gerade habe ich zwei Datensätze in der
"fragezeichen"-Datei, die den Text "eigentlich ein Knoten" enthielten,
ersatzlos gelöscht. Dabei handelte es sich um Knoten an der B5 von
Spandau Richtung Nauen, die in der BBBike-Karte nur als normale Kreuzung
dargestellt waren, ohne detaillierte Ausfahrten darzustellen. Die
restlichen Autobahnen und Kfz-Straßen sind ja auch nur grob dargestellt,
sollen nur einen ungefähren Orientierungspunkt geben, und, was das
Wichtigste ist, sind für das Routing sowieso nicht interessant.
2009-01-11 Sun
→ osm2bbd
osm2bbd verwendet jetzt XML::LibXML::Reader statt der
DOM-Funktionalität von XML::LibXML. Der Grund war, dass das Parsen der
vorgefertigten Länder-OSM-Dateien (Brandenburg und Berlin) zu viel
Speicher verbraucht hatte, weit über 2GB. Die Implementation mit
XML::LibXML::Reader ist weit schwieriger und fehleranfälliger. Das
Ergebnis scheint aber jetzt in Ordnung zu sein (der alte
XML::LibXML-Parser ist weiterhin verfügbar und ein diff zwischen beiden
Ergebnissen zeigt keinen Unterschied), und der neue Parser ist sogar
etwas schneller.
Wo ich gerade bei den OpenStreetMap-Daten war, habe ich noch einige
Fehler in den osm-Daten per Merkaartor behoben. Aber wie spezifiziert
man dort eine für Radfahrer offene Einbahnstraße?
2008-11-16 Sun
→ U-Bahn-Tunnelstrecken
Heute habe ich entdeckt, dass die U5 einen
Tunnelabschnitt zwischen Kaulsdorf-Nord und Wuhletal. Das habe ich zum
Anlass genommen, das bereits geplante Projekt "U-Bahn-Tunnelabschnitte
markieren" durchzuführen. Das erweiterte Projekt würde noch Einschnitt-
und Dammstrecken umfassen, aber das habe ich für später aufgeschoben.
Dabei habe ich gemerkt, dass U-Bahnlinien und Autobahnen die gleiche
Kartensignatur haben. Um das zu verbessern, werden die Autobahnen-Linien
nun mit einer dünnen Linie in der Mitte gezeichnet, so dass man einen
"Zwei-Bahnen"-Effekt hat. Leider gibt es einige Stellen im Programmcode,
die man bei Kartensignaturänderungen anpassen muss: die eigentliche
Funktion zum Zeichnen (generate_plot_functions) und das Zeichnen der
Legende (in BBBikePrint.pm). Da die dünne Linie bei großen Maßstäben
nicht gezeichnet werden darf (die Autobahn-Linien sind dann zu dünn
dafür), muss diese bei einigen Zoomstufen ausgeblendet werden --- dass
muss in change_category_visibility() passieren, aber auch beim initialen
Zeichnen.
2008-11-06 Thu
→ gpx2bbd
Für große GPX-Dateien (so um die 1.5 MB) war das Skript bei
Verwendung des XML::LibXML-Moduls unheimlich langsam: über zwei Minuten
auf einem Athlon 64 3500+. Mit XML::Twig war es erträglich: etwa 8
Sekunden. Nachdem ich das Skript mit Devel::NYTProf durchlaufen habe,
war der Übeltäter schnell gefunden: ich habe statt
$xmlnode->find('./@...')
das schnellere
$xmlnode->getAttribute('...')
verwendet. Danach brauchte das Skript nur noch eine Sekunde, also über
120x so schnell!
2008-08-24 Sun
→ fast_plot_str und osm
Um Tunnels und Brücken mit der "fast"-Version
zu unterstützen, werden jetzt auch die richtigen Aufrufe von draw_bridge
und draw_tunnel_entrance gemacht. Leider muss ich mit dieser Doppelung
von Code leben --- die einzige Alternative ist, schon früher aus XS
heraus eine Perl-Subroutine ähnlich plotstr_draw_sub aufzurufen. Damit
würde aber auch etwas vom Geschwindigkeitsvorteil verloren gehen.
→ osm2bbd
Labels für Inseln werden anscheinend mit place=island
gekennzeichnet (gesehen bei den dalmatinischen Inseln). osm2bbd erzeugt
jetzt also die Kategorie "I" in der Datei "wasserstrassen" für solche
osm-Items, und bbbike kann damit etwas anfangen.
Viele von Wolfram berichtete Kleinigkeiten verbessert bzw. seine Patches
angewendet (-debug/-verbose, curl ...).
Weiterhin hat sich die -center-Handhabung nochmal geändert. Bei osm2bbd
wird jetzt mit -center ein Hint für den Renderer gesetzt (damit wird
"center" in die Metadatei geschrieben; bbbike kann damit umgehen und
bevorzugt diesen Wert anstelle der Mitte der Bounding-Box). Die alte
Bedeutung von -center erhält man jetzt mit -centerdelta; aber ich
glaube, dass man diese Option nicht mehr braucht. Denn diese Option ist
jetzt eigentlich nur noch dazu gut, um "kleine" Koordinaten
(Koordinaten, die sich in der Nähe von 0,0 befinden) zu erhalten.
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
Letztes Update: 2009-12-05 13:50