std::getline from header is rather slow ------------------------------------------------ Key: STDCXX-231 URL: http://issues.apache.org/jira/browse/STDCXX-231 Project: C++ Standard Library Type: Improvement Components: 21. Strings Reporter: Martin Sebor Moved from the Rogue Wave bug tracking database: ****Created By: leroy @ Jan 25, 2001 03:20:01 PM**** Environment Compiler : SUNPRO 4.2 OS : Solaris 2.5.1 SCL : 1.3.0 (Summer-1999) Tools : 7.1.0 (Summer-1999) --> Use only for RWBench Command line option : for debug : CC -xildoff +w +p -g -o Test_dbg.exe test.cc -DRWDEBUG=1 -I/opt/RogueWave/Summer-1999/workspaces/SOLARIS251/SUNPRO42/11s -I/opt/RogueWave/Summer-1999/workspaces/SOLARIS251/SUNPRO42/11s/include -I. -L/opt/RogueWave/Summer-1999/workspaces/SOLARIS251/SUNPRO42/11s/lib -Bstatic -ltls11s -lstd11s -Bdynamic for release : CC -xildoff +w +p -fast -o Test_release.exe test.cc -I/opt/RogueWave/Summer-1999/workspaces/SOLARIS251/SUNPRO42/8s -I/opt/RogueWave/Summer-1999/workspaces/SOLARIS251/SUNPRO42/8s/include -I. -L/opt/RogueWave/Summer-1999/workspaces/SOLARIS251/SUNPRO42/8s/lib -Bstatic -ltls8s -lstd8s -Bdynamic (Uploaded file: 997149-test.cc) **** Entered By: Web @ Thursday, January 25, 2001 2:41:42 AM **** Location of uploaded file: http://thoth.bco.roguewave.com/uploads/997149-test.cc View all uploaded files for this incident: http://webdev.roguewave.com/admin/tsvw/index.cfm?IncidentID=997149 **** Entered By: Web @ Thursday, January 25, 2001 2:44:56 AM **** #web Please find my test case at the end of the note Environment Compiler : SUNPRO 4.2 OS : Solaris 2.5.1 SCL : 1.3.0 (Summer-1999) Tools : 7.1.0 (Summer-1999) --> Use only for RWBench Command line option : for debug : CC -xildoff +w +p -g -o Test_dbg.exe test.cc -DRWDEBUG=1 -I/opt/RogueWave/Summer-1999/workspaces/SOLARIS251/SUNPRO42/11s -I/opt/RogueWave/Summer-1999/workspaces/SOLARIS251/SUNPRO42/11s/include -I. -L/opt/RogueWave/Summer-1999/workspaces/SOLARIS251/SUNPRO42/11s/lib -Bstatic -ltls11s -lstd11s -Bdynamic for release : CC -xildoff +w +p -fast -o Test_release.exe test.cc -I/opt/RogueWave/Summer-1999/workspaces/SOLARIS251/SUNPRO42/8s -I/opt/RogueWave/Summer-1999/workspaces/SOLARIS251/SUNPRO42/8s/include -I. -L/opt/RogueWave/Summer-1999/workspaces/SOLARIS251/SUNPRO42/8s/lib -Bstatic -ltls8s -lstd8s -Bdynamic #Code #include #include #include #include class std_string_getline : public RWBench { public: std_string_getline() {;} void doLoop(unsigned long n); void idleLoop(unsigned long n); void what(ostream& os) const { os << "Standard String Getline : " << endl;} }; class classic_getline : public RWBench { public: classic_getline() {;} void doLoop(unsigned long n); void idleLoop(unsigned long n); void what(ostream& os) const { os << "Classic Getline : " << endl;} }; int main(int argc, char** argv) { std_string_getline test_std_string; test_std_string.parse(argc, argv); test_std_string.go(); test_std_string.report(cout); classic_getline test_classic_getline; test_classic_getline.parse(argc, argv); test_classic_getline.go(); test_classic_getline.report(cout); } void std_string_getline::doLoop(unsigned long n) { while (n--) { ifstream toRead(__FILE__); string line; line.reserve(512); while (!(toRead.eof())) { getline(toRead, line, '\n'); } } } void std_string_getline::idleLoop(unsigned long n) { while (n--) { ifstream toRead(__FILE__); string line; line.reserve(512); } } void classic_getline::doLoop(unsigned long n) { while (n--) { ifstream toRead(__FILE__); char cLine[512]; string line; line.reserve(512); while (!(toRead.eof())) { toRead.getline(cLine, 512); line = cLine; } } } void classic_getline::idleLoop(unsigned long n) { while (n--) { ifstream toRead(__FILE__); char cLine[512]; string line; line.reserve(512); } } #EndCode There appears to be something to this. I ran the program and here is the output: Sun C++ Standard String Getline : Iterations: 1 Inner loop operations: 1000 Total operations: 1000 Elapsed (user) time: 18.18 Operations per second: 55.0055 Sun C++ Classic Getline : Iterations: 5 Inner loop operations: 1000 Total operations: 5000 Elapsed (user) time: 4.67 Kilo-operations per second: 1.07066 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira