Performance of code compiled with the g++

Discussion in 'C++' started by Wojciech Waga, Aug 24, 2011.

  1. I was trying to test some performance gains of move semantics when I
    came across a strange thing, namely:

    For a code:
    http://pastebin.com/3jqgyc8v

    (There is a copy constructor to prevent gcc4.6 from using default move
    constructor which speeds up things greatly, but is of no interest here.)

    The speed of resulting binary differs vastly among versions of gcc. It
    seems like gcc<4.5 gives pretty good binary, and gcc>=4.5 does not.
    Intel compiler 12.0.0 gives results similar to gcc<4.5.

    For those who prefer bare values:
    The same code compiled with:
    gcc4.4.6 runs 0.47s
    gcc4.6.1 runs 1.73s

    A full plot comparing 3 versions of gcc with std= c++98/c++0x is here:
    http://www.wojek.net/ww/gcc_speed.png

    Does anyone know what is wrong? Especially the difference between gcc4.6
    with and without c++0x is interesting. Can be there any c++0x
    optimisations in library routines for this code?

    Best regards,
    Wojciech Waga
    Wojciech Waga, Aug 24, 2011
    #1
    1. Advertising

  2. On 8/24/2011 3:38 AM, Wojciech Waga wrote:
    > I was trying to test some performance gains of move semantics when I
    > came across a strange thing, namely:
    >
    > For a code:
    > http://pastebin.com/3jqgyc8v
    >
    > (There is a copy constructor to prevent gcc4.6 from using default move
    > constructor which speeds up things greatly, but is of no interest here.)
    >
    > The speed of resulting binary differs vastly among versions of gcc. It
    > seems like gcc<4.5 gives pretty good binary, and gcc>=4.5 does not.
    > Intel compiler 12.0.0 gives results similar to gcc<4.5.
    >
    > For those who prefer bare values:
    > The same code compiled with:
    > gcc4.4.6 runs 0.47s
    > gcc4.6.1 runs 1.73s
    >
    > A full plot comparing 3 versions of gcc with std= c++98/c++0x is here:
    > http://www.wojek.net/ww/gcc_speed.png
    >
    > Does anyone know what is wrong?


    You mean, besides the fact that GCC is community-based (meaning
    everybody, but in fact *nobody*, is responsible for the functionality or
    the performance)?

    > Especially the difference between gcc4.6
    > with and without c++0x is interesting. Can be there any c++0x
    > optimisations in library routines for this code?


    Nah... Optimisation? In the library routines?... Nah...

    Could be that gcc C++0x is smart enough to see that your code has very
    little side effect (no I/O to speak of) and it figures to let you down
    easy and just puts some 'usleep' calls in there, just to keep you guessing?

    Use a profiler and figure out where the differences are. Then look at
    the machine code, if you're into it. But usually you should see all of
    that in the source. It's not like your program is so complex that its
    total source (including allocators and sorting) would be too hard to
    comprehend.

    V
    --
    I do not respond to top-posted replies, please don't ask
    Victor Bazarov, Aug 24, 2011
    #2
    1. Advertising

  3. Wojciech Waga

    Edek Guest

    On 08/24/2011 09:38 AM, Wojciech Waga wrote:
    > I was trying to test some performance gains of move semantics when I
    > came across a strange thing, namely:
    >
    > For a code:
    > http://pastebin.com/3jqgyc8v
    >
    > (There is a copy constructor to prevent gcc4.6 from using default move
    > constructor which speeds up things greatly, but is of no interest here.)
    >
    > The speed of resulting binary differs vastly among versions of gcc. It
    > seems like gcc<4.5 gives pretty good binary, and gcc>=4.5 does not.
    > Intel compiler 12.0.0 gives results similar to gcc<4.5.
    >
    > For those who prefer bare values:
    > The same code compiled with:
    > gcc4.4.6 runs 0.47s
    > gcc4.6.1 runs 1.73s
    >
    > A full plot comparing 3 versions of gcc with std= c++98/c++0x is here:
    > http://www.wojek.net/ww/gcc_speed.png
    >
    > Does anyone know what is wrong? Especially the difference between gcc4.6
    > with and without c++0x is interesting. Can be there any c++0x
    > optimisations in library routines for this code?
    >
    > Best regards,
    > Wojciech Waga
    >


    You might want to try here:

    Edek
    Edek, Aug 24, 2011
    #3
  4. On 8/24/2011 4:13 PM, Jorgen Grahn wrote:
    > On Wed, 2011-08-24, Victor Bazarov wrote:
    >> On 8/24/2011 3:38 AM, Wojciech Waga wrote:

    > ...
    >>> For those who prefer bare values:
    >>> The same code compiled with:
    >>> gcc4.4.6 runs 0.47s
    >>> gcc4.6.1 runs 1.73s
    >>>
    >>> A full plot comparing 3 versions of gcc with std= c++98/c++0x is here:
    >>> http://www.wojek.net/ww/gcc_speed.png
    >>>
    >>> Does anyone know what is wrong?

    >>
    >> You mean, besides the fact that GCC is community-based (meaning
    >> everybody, but in fact *nobody*, is responsible for the functionality or
    >> the performance)?

    >
    > Unlike proprietary software, where a single person is responsible ...?
    >
    > But seriously, do you have complaints about g++ performance, compared
    > to something else? I haven't heard anyone complain for literally a
    > decade, so I'm a bit curious.


    *I* don't have any complaints - I haven't used that software for years
    to have an up-to-date opinion. The OP has a complaint, apparently. Ask
    him, maybe.

    >
    > /Jorgen
    >


    V
    --
    I do not respond to top-posted replies, please don't ask
    Victor Bazarov, Aug 24, 2011
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?Utf-8?B?S3VydCBTY2hyb2VkZXI=?=

    compiled DLL's and performance

    =?Utf-8?B?S3VydCBTY2hyb2VkZXI=?=, Feb 8, 2005, in forum: ASP .Net
    Replies:
    13
    Views:
    514
    Patrice
    Feb 9, 2005
  2. Klaus Schneider
    Replies:
    1
    Views:
    539
    Rolf Magnus
    Dec 2, 2004
  3. lander
    Replies:
    5
    Views:
    586
    bruce barker
    Mar 5, 2008
  4. Arne Vajhøj
    Replies:
    7
    Views:
    982
    Paul Cager
    Apr 4, 2010
  5. Roedy Green
    Replies:
    1
    Views:
    386
    Arne Vajhøj
    Mar 28, 2010
Loading...

Share This Page