Parameter einer Konsoleanwendung umwandeln
-
@SeppJ sagte in Parameter einer Konsoleanwendung umwandeln:
@It0101 sagte in Parameter einer Konsoleanwendung umwandeln:
strtol nutze ich auch gern, weil es vielseitig ist. Aber man sollte immer berücksichtigen: Der Performanceknaller ist es nicht. Würde ich 100 Mio Strings in Zahlen umwandeln wollen, wäre strtol nicht meine erste Wahl.
Nanu, was würdest du sonst nehmen?
atol Wenn die Performanceunterschiede so krass sind und ich keine besonderen Ansprüche habe, nehm ich das ganz gerne mal. Zumindest wenn in dem Anwendungsfall Performance ein Thema ist. Was ja längst nicht immer der Fall ist.
-
@It0101 sagte in Parameter einer Konsoleanwendung umwandeln:
atol Wenn die Performanceunterschiede so krass sind und ich keine besonderen Ansprüche habe, nehm ich das ganz gerne mal. Zumindest wenn in dem Anwendungsfall Performance ein Thema ist. Was ja längst nicht immer der Fall ist.
Igitt!
Hast du Zahlen zum Performanceunterschied? Auch wenn du Fehlerbehandlung (die bei atol sehr umständlich ist) mit einschließt, die man bei Nutzereingaben immer machen sollte? (Theoretisch muss man bei atol ja vorher sogar die Länge prüfen, da eine zu lange Zahl nicht nur ein Fehlerfall ist, sondern sogar richtig undefiniertes Verhalten)
-
@SeppJ Ich hab vor ein paar Jahren mal was gebastelt was richtig grosse Testfiles mit haufenweise Integers, Strings etc. schreiben und einlesen sollte. Das Ergebnis war dass ich mir alles bis auf die floating-point Sachen selbst geschrieben habe. Und die floating-point Sachen auch nur deswegen nicht, weil der Anteil an floating-point Einträgen in den Files für die das Ding gedacht war minimal war.
Eine potentiell grosse Bremse bei
strtol
ist dass es ja nach locale zusätzliche Zeichen bzw. Zahlenformate unterstützen kann. Ich weiss nicht ob das irgendwo wirklich implementiert ist, aber jeder Zugriff auf die locale bremst schonmal. Selbst wenn dabei rauskommt dass es eh nix zusätzlich zu beachten gibt weil "C" locale.Wie
from_chars
im Vergleich zu (gutem, schnellem, auf das nötige reduzierten) selbst geschriebenem Code abschneidet weiss ich nicht. Ich würde erwarten nicht so schlecht, da es die locale ignoriert und zumindest die MSVC Implementierung inline ist.
-
@SeppJ sagte in Parameter einer Konsoleanwendung umwandeln:
Nanu, was würdest du sonst nehmen?
Achtung, nicht ganz ernst gemeint: boost::qi::spirit.
Immerhin wird hier behauptet sie hätten die schnellsten numerischen Parser. Etwas älterer Stand.Aber man kann es auch übertreiben...
-
@5cript sagte in Parameter einer Konsoleanwendung umwandeln:
Achtung, nicht ganz ernst gemeint: boost::qi::spirit.
Ein noch größeres Kaliber hattest Du nicht gefunden?
Die Laufzeit des Compilers war zumindest früher mit Spirit unterirdisch.
-
@john-0 sagte in Parameter einer Konsoleanwendung umwandeln:
@5cript sagte in Parameter einer Konsoleanwendung umwandeln:
Achtung, nicht ganz ernst gemeint: boost::qi::spirit.
Ein noch größeres Kaliber hattest Du nicht gefunden?
Deswegen mein fetter remark
-
@5cript sagte in Parameter einer Konsoleanwendung umwandeln:
@john-0 sagte in Parameter einer Konsoleanwendung umwandeln:
@5cript sagte in Parameter einer Konsoleanwendung umwandeln:
Achtung, nicht ganz ernst gemeint: boost::qi::spirit.
Ein noch größeres Kaliber hattest Du nicht gefunden?
Deswegen mein fetter remark
Du reinigst deine Dachrinne schon gelegentlich mit einem Eisenbahngeschütz oder?
-
@It0101 sagte in Parameter einer Konsoleanwendung umwandeln:
@5cript sagte in Parameter einer Konsoleanwendung umwandeln:
@john-0 sagte in Parameter einer Konsoleanwendung umwandeln:
@5cript sagte in Parameter einer Konsoleanwendung umwandeln:
Achtung, nicht ganz ernst gemeint: boost::qi::spirit.
Ein noch größeres Kaliber hattest Du nicht gefunden?
Deswegen mein fetter remark
Du reinigst deine Dachrinne schon gelegentlich mit einem Eisenbahngeschütz oder?
Aber es ist nicht irgendein Eisenbahngeschütz, sondern das schnellste Eisenbahngeschütz. Das ist schon was.
Das schreit eigentlich nach einem großen Performancevergleichstest aller erwähnten Methoden. Insbesondere aller Ideen zur Optimierung des selbstgeschriebenen Parsers.
-
@SeppJ sagte in Parameter einer Konsoleanwendung umwandeln:
Aber es ist nicht irgendein Eisenbahngeschütz, sondern das schnellste Eisenbahngeschütz. Das ist schon was.
Eisenbahnrailgun
-
@hustbaer
Ich nehm dafür einen Baseball und beschleunige diesen auf 90% Lichtgeschwindigkeit. Macht ordentlich sauber.XKCD: What would happen if you tried to hit a baseball pitched at 90% the speed of light?