------- Comment #5 from dberlin at gcc dot gnu dot org 2006-12-15 05:27 ------- Subject: Re: New: std::vector::size() 10x speedup (patch)
And what are the timings with a recent version of g++ and actually turning on optimization? On 13 Dec 2006 17:38:06 -0000, charles at rebelbase dot com <[EMAIL PROTECTED]> wrote: > vector::size() in bits/stl_vector.h is currently implemented as > > size_type > size() const > { return size_type(end() - begin()); } > > A faster implementation is > > size_type > size() const > { return _M_impl._M_finish - _M_impl._M_start; } > > Which avoids the temporary iterators' life cycles > and operator- calls. > > I tried a simple timing test on both implementations, > and the latter appears to be 10x faster: > > (11:35:56)(charles xyzzy)(~): cat test.cc > #include <vector> > int main () { > std::vector<int> x (100); > unsigned long l = 0; > const unsigned long iterations = 100000000; > for (unsigned long i=0; i<iterations; ++i) > l += x.size (); > return 0; > } > (11:35:58)(charles xyzzy)(~): g++ -o test test.cc -lstdc++ > (11:36:05)(charles xyzzy)(~): time ./test > > real 0m3.692s > user 0m3.676s > sys 0m0.004s > (11:36:10)(charles xyzzy)(~): cat test2.cc > #include <vector> > int main () { > std::vector<int> x (100); > unsigned long l = 0; > const unsigned long iterations = 100000000; > for (unsigned long i=0; i<iterations; ++i) > l += x._M_impl._M_finish - x._M_impl._M_start; > return 0; > } > (11:36:13)(charles xyzzy)(~): g++ -o test2 test2.cc -lstdc++ > (11:36:19)(charles xyzzy)(~): time ./test2 > > real 0m0.342s > user 0m0.336s > sys 0m0.004s > > > -- > Summary: std::vector::size() 10x speedup (patch) > Product: gcc > Version: unknown > Status: UNCONFIRMED > Severity: enhancement > Priority: P3 > Component: libstdc++ > AssignedTo: unassigned at gcc dot gnu dot org > ReportedBy: charles at rebelbase dot com > > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30203 > > -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30203