------- 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

Reply via email to