Python and STL efficiency

JSprenkle at gmail.com JSprenkle at gmail.com
Thu Aug 24 14:50:46 EDT 2006


Licheng Fang wrote:
> Hi, I'm learning STL and I wrote some simple code to compare the
> efficiency of python and STL.
>
> //C++
> #include <iostream>
> #include <string>
> #include <vector>
> #include <set>
> #include <algorithm>
> using namespace std;
>
> int main(){
> 	vector<string> a;
> 	for (long int i=0; i<10000 ; ++i){
> 		a.push_back("What do you know?");
> 		a.push_back("so long...");
> 		a.push_back("chicken crosses road");
> 		a.push_back("fool");
> 	}
> 	set<string> b(a.begin(), a.end());
> 	unique_copy(b.begin(), b.end(), ostream_iterator<string>(cout, "\n"));
> }

I think you probably want this C++ code instead:

//C++
#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;

int main(){
        vector<string> a;
        a.reserve( 40000 );  //<------------------ note this change
        for (long int i=0; i<10000 ; ++i){
                a.push_back("What do you know?");
                a.push_back("so long...");
                a.push_back("chicken crosses road");
                a.push_back("fool");
        }
        set<string> b(a.begin(), a.end());
        unique_copy(b.begin(), b.end(), ostream_iterator<string>(cout,
"\n"));
}

It will run a lot faster if it doesn't have to keep resizing the array.




More information about the Python-list mailing list