0029399: Optimize reading of floating point values from text strings IR-2018-01-26
authorabv <abv@opencascade.com>
Sun, 24 Dec 2017 06:44:04 +0000 (09:44 +0300)
committerapn <apn@opencascade.com>
Fri, 26 Jan 2018 17:11:03 +0000 (20:11 +0300)
commit07bbde451a11595140977b457e50b60c35cab354
tree72c8da6300e912c02746997e42b76279576c9bef
parent0edbf10564f1d06f96d5eb936af909ac0ec36d85
0029399: Optimize reading of floating point values from text strings

Function Strtod() is reimplemented using open source (MIT-style license) code by David M. Gay instead of strtod() provided by standard run-time library. This improves its performance by 3-10 times.

Functions Atof(), Strtod(), Printf(), Sprintf(), Fprintf() are declared as extern "C" to be usable from C programs.

Strtod() is used in Interface_FileReaderData::Fastof() and in RWStl_Reader to accelerate their work.

DRAW command QATestAtof and test perf fclasses strtod are added to check correctness and performance of Strtod().
Test perf draw restore is added to monitor performance of reading BREP files.

Minor off-topic corrections:
- method Standard_GUID::Assign (const Standard_UUID&) is implemented (was empty);
- Precision.hxx is included in BRepMesh_Vertex.hxx that uses it.
16 files changed:
dox/overview/overview.md
src/BRepMesh/BRepMesh_Vertex.hxx
src/Interface/Interface_FileReaderData.cxx
src/QANCollection/QANCollection_Test.cxx
src/RWStl/RWStl_Reader.cxx
src/Standard/FILES
src/Standard/Standard_CString.cxx
src/Standard/Standard_CString.hxx
src/Standard/Standard_GUID.cxx
src/Standard/Standard_SStream.cxx [deleted file]
src/Standard/Standard_Strtod.cxx
src/Standard/Standard_UUID.cxx [deleted file]
tests/de/step_1/A3
tests/de/step_3/E6
tests/perf/draw/restore [new file with mode: 0644]
tests/perf/fclasses/strtod [new file with mode: 0644]