c versus c++, performance wise

Discussion in 'C++' started by Fred, Oct 28, 2003.

  1. Fred

    Fred Guest

    Has anyone a link or any information comparing c and c++ as far as
    execution speed is concerned?

    Signal Processing algorithms would be welcome...

    Thanks

    Fred
    Fred, Oct 28, 2003
    #1
    1. Advertising

  2. > Has anyone a link or any information comparing c and c++ as far as
    > execution speed is concerned?


    > Signal Processing algorithms would be welcome...


    As a general rule of thumb, if you write C programs and compile them with a
    C++ compiler, they will run just as fast as if they were compiled with a C
    compiler.

    If you want to write C++ programs that cannot be expressed in an obvious way
    as C programs, then it is hard to understand what kind of performance
    comparisons are meaningful.
    Andrew Koenig, Oct 28, 2003
    #2
    1. Advertising

  3. > Has anyone a link or any information comparing c and c++ as far as
    > execution speed is concerned?
    >
    > Signal Processing algorithms would be welcome...


    http://www.objectmentor.com/resources/articles/WhyAreYouStillUsingC.pdf

    Eventually it boils down to how you use C++. Given that almost all C
    code can also compile on C++ compilers, C++ can be at least as effecient
    as C. C++ offeres also some features to give you the option to achieve a
    better balance between elegancy, reusability and/or safety on one side
    and performance on the other side. And even though some C++ features
    (like virtual functions) have a run-time overhead, it is important to
    realize that if you want to accomplish the same thing in C (like using
    switch/case) it also has performance penalty.
    --
    Peter van Merkerk
    peter.van.merkerk(at)dse.nl
    Peter van Merkerk, Oct 28, 2003
    #3
  4. Fred wrote:
    > Has anyone a link or any information comparing c and c++ as far as
    > execution speed is concerned?
    > ...


    Since C++ includes C as a subset (yes, there are some differences, but
    they are non-essential within the context of this question), there's
    absolutely no reason for any difference in "execution speed" to exist.
    It doesn't.

    If you are asking for a purely _statistical_ comparison, based on
    performance of some existing products that implement similar
    functionality in C and C++, I don't have this information. But than
    again, this would be the type of statistics that can be used to prove
    anything...

    --
    Best regards,
    Andrey Tarasevich
    Brainbench C and C++ Programming MVP
    Andrey Tarasevich, Oct 28, 2003
    #4
  5. (Fred) threw a soggy newspaper against the
    wall, and here's what stuck:

    > Has anyone a link or any information comparing c and c++ as far as
    > execution speed is concerned?
    >
    > Signal Processing algorithms would be welcome...


    This might be worth a read: "Technical Report on C++ Performance"

    http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1430.pdf

    PMP
    Paul M. Parks, Oct 28, 2003
    #5
  6. Fred

    Alex Vinokur Guest

    "Paul M. Parks" <> wrote in message news:Xns94228730E8571DarthPaulOfDuluth@216.168.3.44...
    > (Fred) threw a soggy newspaper against the
    > wall, and here's what stuck:
    >
    > > Has anyone a link or any information comparing c and c++ as far as
    > > execution speed is concerned?
    > >
    > > Signal Processing algorithms would be welcome...

    >
    > This might be worth a read: "Technical Report on C++ Performance"
    >
    > http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1430.pdf
    >
    > PMP


    Also :
    Technical Report on C++ Performance (ISO/IEC PDTR 18015; Date: 2003-08-11; WG21 N1487=03-0070)
    * http://std.dkuug.dk/JTC1/SC22/WG21/docs/PDTR18015.pdf
    * http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1487.pdf


    --
    =====================================
    Alex Vinokur
    mailto:
    http://mathforum.org/library/view/10978.html
    news://news.gmane.org/gmane.comp.lang.c .perfometer
    =====================================
    Alex Vinokur, Oct 28, 2003
    #6
  7. Fred

    Alex Vinokur Guest

    "Fred" <> wrote in message news:...
    > Has anyone a link or any information comparing c and c++ as far as
    > execution speed is concerned?
    >
    > Signal Processing algorithms would be welcome...
    >
    > Thanks
    >
    > Fred


    Look at :
    http://groups.google.com/groups?selm=bd221m$oh654$
    http://news.gmane.org/gmane.comp.lang.c .perfometer/
    news://news.gmane.org/gmane.comp.lang.c .perfometer

    http://www.eventhelix.com/RealtimeMantra/basics/ComparingCPPAndCPerformance.htm
    http://www.eventhelix.com/RealtimeMantra/basics/ComparingCPPAndCPerformance2.htm
    http://www.eventhelix.com/RealtimeMantra/Basics/OptimizingCAndCPPCode.htm

    --
    =====================================
    Alex Vinokur
    mailto:
    http://mathforum.org/library/view/10978.html
    =====================================
    Alex Vinokur, Oct 28, 2003
    #7
  8. Fred wrote:

    > Has anyone a link or any information comparing C and C++
    > as far as execution speed is concerned?
    >
    > Signal Processing algorithms would be welcome...



    Take a look at the
    Vector Signal and Image Processing Library (VSIPL) web page:

    http://www.vsipl.org/

    and the
    High Performance Embedded Computing Software Initiative (HPEC-SI)
    web page:

    http://www.hpec-si.org/

    They specify *standard* APIs for DSP libraries
    which should permit you to compare implementations
    from competing vendors and, eventually, to compare implementations
    for both C and C++ language bindings.
    Some vendors may actually use C++ compilers to compile their C codes.
    E. Robert Tisdale, Oct 28, 2003
    #8
  9. "Alex Vinokur" <> threw a soggy newspaper against the
    wall, and here's what stuck:

    > "Paul M. Parks" <> wrote in message
    > news:Xns94228730E8571DarthPaulOfDuluth@216.168.3.44...
    >>
    >> This might be worth a read: "Technical Report on C++ Performance"
    >>

    >
    > Also :
    > Technical Report on C++ Performance (ISO/IEC PDTR 18015; Date:
    > 2003-08-11; WG21 N1487=03-0070) *
    > http://std.dkuug.dk/JTC1/SC22/WG21/docs/PDTR18015.pdf *
    > http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1487.pdf


    Oops. Thanks for clearing that up.

    PMP
    Paul M. Parks, Oct 28, 2003
    #9
  10. Fred

    Dave Baum Guest

    In article <>,
    (Fred) wrote:

    > Has anyone a link or any information comparing c and c++ as far as
    > execution speed is concerned?


    A lot depends on how you write your C++ code.

    As a baseline, you could write your program just like you would in C but
    compile it with a C++ compiler. The performance of C vs. C++ is a wash
    here. Of course this may sound obvbious, but I think it is an important
    point because in most systems, performance is only an issue for a subset
    of the code. With C++ you can always fall back to C-style programming
    in areas where your program needs the performance and where C++ style
    code would lead to an unacceptable performance penalty.

    For example, the iostream library provides a lot more power than stdio,
    but it also tends to run slower. If this isn't critical to your system
    performance, then iostream is worth learning/using. However I wrote one
    program where logging was a significant part of the overall system
    performance and using iostream was about 3x slower than fprintf(), so I
    wound up using fprintf(). The decision to write the program in C++ was
    still a good one since I benefited from many of the C++ mechanisms
    throughout the rest of the program and only had to fall back to a more
    "C-like" approach in this one instance.

    C++ has quite a few features (const, inline functions, templates) that
    afford better abstraction than C, but when used properly, result in no
    performance penalty.

    There are a few instances (exceptions, virtual functions) where the
    resulting code is usually more efficient than what you would've written
    yourself in C - provided you needed the functionality. For example,
    exceptions are often more efficient than explicit error checking, but if
    your C program wasn't going to check errors, then exceptions aren't
    helping you. Same with virtual functions versus switch statements or
    explicit function pointers.

    With the complexity and power of C++ comes a lot of potential for
    problems - especially performance wise. This can be a real concern for
    a performance sensitive project staffed by people who are solid C
    programmers but new to C++. My only advice would be to go ahead and use
    C++, but be disciplined in what features you use. Don't make everything
    a virtual function and create a deep object hierarchy just because you
    can in C++. It would also be worth reading up on some common pitfalls
    and optimizations for C++ ("Effective C++" by Meyers is an excellent
    book on the subject).

    Dave Baum
    Dave Baum, Oct 28, 2003
    #10
  11. Fred

    lilburne Guest

    Fred wrote:

    > Has anyone a link or any information comparing c and c++ as far as
    > execution speed is concerned?
    >
    > Signal Processing algorithms would be welcome...
    >


    We do a lot of mathematical computations, and some of our
    original computational algorithms, solvers, etc were written
    in fortran 20-30 years, when we converted them to C++ and
    compared the old with the new we recorded negligible (2%)
    performance degradation.
    lilburne, Oct 28, 2003
    #11
  12. Fred wrote:

    > Has anyone a link or any information comparing c and c++ as far as
    > execution speed is concerned?


    Under linux, compile the same source (e.g. Hello World) as C and C++. You
    will notice that the C executable runs slightly faster. This happens
    because the C version is linked only against libc, whereas the C++ version
    is linked against libc, libstdc++, libgcc_s and libm. So there exists a
    slight (almost constant, you can verify that by ) performance penalty, due
    to increased *loading* time. At *run* time, there is no observable
    difference. You can verify it by running a large loop.

    Not that this only happens with dynamic executables. Static executables
    don't seem to have any difference whatsoever.
    Dimitris Kamenopoulos, Oct 29, 2003
    #12
  13. Fred

    Sandeep Guest

    Sandeep, Oct 31, 2003
    #13
    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. Rogue Chameleon
    Replies:
    16
    Views:
    560
    Gerbrand van Dieijen
    Nov 26, 2004
  2. Enrique Cruiz

    Row-wise vs. column-wise image processing

    Enrique Cruiz, Jan 25, 2007, in forum: C Programming
    Replies:
    10
    Views:
    702
    christian.bau
    Jan 26, 2007
  3. Enrique Cruiz
    Replies:
    5
    Views:
    399
    Jim Langston
    Jan 25, 2007
  4. Showjumper

    Performance wise whats better?

    Showjumper, Mar 3, 2005, in forum: ASP .Net Building Controls
    Replies:
    4
    Views:
    119
  5. Paul Butcher
    Replies:
    12
    Views:
    688
    Gary Wright
    Nov 28, 2007
Loading...

Share This Page