[ 
https://issues.apache.org/jira/browse/STDCXX-231?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Sebor updated STDCXX-231:
--------------------------------

             Severity: Inefficiency
    Affects Version/s: 4.1.2
                       4.1.3
                       4.1.4
                       4.2.0
        Fix Version/s: 4.2.1

Affects all released versions.
Let's try to look into speeding this up in 4.2.1.

> std::getline from <string> header is rather slow
> ------------------------------------------------
>
>                 Key: STDCXX-231
>                 URL: https://issues.apache.org/jira/browse/STDCXX-231
>             Project: C++ Standard Library
>          Issue Type: Improvement
>          Components: 21. Strings
>    Affects Versions: 4.1.2, 4.1.3, 4.1.4, 4.2.0
>            Reporter: Martin Sebor
>             Fix For: 4.2.1
>
>
> 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 <string>
> #include <fstream.h>
> #include <iostream.h>
> #include <rw/bench.h>
>  
>  
> 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.
-
You can reply to this email to add a comment to the issue online.

Reply via email to