Meine Anwendung muss doppelte Werte in char * konvertieren, um in eine Pipe zu schreiben, die nur Zeichen akzeptiert. Die üblichen Methoden hierfür sind die Verwendung der Funktion sprintf() oder die Verwendung von ostringstream aus der Headerdatei iomanip.h.Konvertieren von Double in char * in C++ mit hoher Performance
Stellt sich heraus, beide haben wirklich schlechte Leistung. Und meine Anwendung muss diese Konvertierung so oft durchführen, dass sie zum primären Engpass wird.
Gibt es eine andere Funktion, die ich verwenden könnte? Welche Logik kann ich verwenden, um eine effiziente Konvertierungsfunktion zu schreiben? Das Einzige, was mir bisher gelungen ist, ist, jede einzelne Ziffer mit Hilfe von Divisions- und Mod-Operationen herauszufiltern und diese Ziffern an ein char * anzuhängen, um den gesamten doppelten Wert zu erhalten. Dies scheint jedoch kein guter Ansatz zu sein und wird wahrscheinlich selbst eine schlechte Leistung haben.
Vielen Dank im Voraus für Ihre Gedanken.
EDIT: Es gibt einige Verwirrung darüber, wie das char * verwendet wird. Das Zeichen char * wird ein Argument für die Funktion fwrite sein, die in eine Pipe schreibt.
Was meinen Sie mit "Pipe akzeptiert nur Zeichen"? Können Sie Bytes senden/schreiben? Ist das Format, in dem die Daten in diesen Bereich fallen (muss es für Menschen lesbar sein), oder konvertieren Sie es auf der anderen Seite zurück? – dbrank0
Lesen Sie hierzu: http://StackOverflow.com/Questions/3173056/Why-Does-Dtoa-C-Contain-So-Much-Code – nhahtdh
Warum nicht bitcast zu einem int und kodieren Sie das in hex und senden Sie das (dann auf der andere Seite konvertieren zurück) –