Performanzfrage: boost::split oder find&substr ?
-
Hi zusammen
Ich parse gerade ne Logdatei und möchte fragen, was dabei effizienter ist: Wenn ich einen einzelnen String aus einem String, der mit "," getrennt ist "heraussplitte", oder wenn ich das per find & substr() mache? Ich tippe auf die zweite Möglichkeit, bin mir jedoch nicht sicher, weil ich nicht weiss, ob boost::split nicht effizienter/schneller ist...
-
Versuch es!
Splitte 100.000 Strings mit der einen und 100.000 mit der Anderen. Dann siehst du was schneller ist.
Ein eindeutige Antwort kann dir wohl keiner geben, denn die Implementierung von std::string ist ja nicht vorgeschrieben.Gruß
Don06
-
Hey danke für die schnelle Antwort Don06. Habs nach deiner Anregung gleich mal ausprobiert, erst klein und danach mit richtig vielen Strings (104000). Hab dabei ein klares Ergebnis erzielt und zwar brauchte das boost:split für die 104000 Strings ca 5 Sekunden und der Code mit find&substr() gerademal lächerliche 0.168 Sekunden. Finde das wirklich beeindruckend, dass der Unterschied wirklich so markant ist. Könnte mich beim Ganzen natürlich auch geirrt haben und einen Fehler gemacht haben. Wenn jemand Lust hat, kann er ja selber mal nachprüfen und hier die Resultate posten, würde mich sehr interessieren, ob ein Anderer auf ein ähnliches Resultat kommt.
EDIT: Hab noch vergessen zu erwähnen, dass der Test auf nem Pentium 4 mit 2 GHz stattgefunden hat
-
Was genau hast du denn gemacht? Willst du /einen/ String aus einer Zeile auslesen oder willst du die ganze Zeile aufsplitten?