TEST 1 25 invoerbestanden met elk een match Go: 0.02s 1000x, per keer: 0.002s (process only) Python: 0.035s 1000x, per keer: 0.0055s (preprocess only) 1000x, per keer: 0.0068s (process only) Python met lxml: 0.04s 1000x, per keer: 0.0025 (preprocess only) 1000x, per keer: 0.006s (process only) bij de laatste: lxml gebruikt misschien een cache van gecompileerde expressies Saxon totaal: 1.4s Saxon opstarten: 1s (getest met lege data) Saxon verwerking: 0.4s ---------------- TEST 2 65200 invoerbestanden waarvan 25 met een match Go: 35s Go met libxml2 voor inlezen: 15s Go met libxml2 voor alles: 8.5s Python: 14s Python met lxml: 9s De xml-parser in Go is erg langzaam. Er gaat dus veel tijd verloren bij het inlezen van een xml-bestand. In PaQu is dat geen probleem omdat je elk bestand maar 1 keer inleest, en er daarna 100 spod-expressies op loslaat. De uitvoer van die expressies is wel snel. Na vervangen van die xml-parser door een wrapper voor libxml2 is Go sneller, maar nog steeds niet erg snel. Misschien komt dat door alle voorbewerkingen. Dat is nuttig als je veel expressies wilt testen per bestand, maar nadelig als je maar één expressie test, en veel van het voorwerk niet benut wordt. Maar dit voorwerk wordt ook gedaan in de Python-versie zonder lxml, en die is nog steeds sneller dan de verbeterde versie in Go. Uiteindelijk in Go ook alle xpath-expressies uitvoeren met libxml2 gaat het snelst.