By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,333 Members | 1,850 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,333 IT Pros & Developers. It's quick & easy.

c versus c++, performance wise

P: n/a
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
Jul 19 '05 #1
Share this Question
Share on Google+
12 Replies


P: n/a
> 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.
Jul 19 '05 #2

P: n/a
> 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/resource...tillUsingC.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
Jul 19 '05 #3

P: n/a
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

Jul 19 '05 #4

P: n/a
fr***********@sysde.eads.net (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/wg2...2003/n1430.pdf

PMP
Jul 19 '05 #5

P: n/a

"Paul M. Parks" <pa********@hNoOtSmPaAiMl.com> wrote in message news:Xn*******************************@216.168.3.4 4...
fr***********@sysde.eads.net (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/wg2...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/wg2...2003/n1487.pdf
--
=====================================
Alex Vinokur
mailto:al****@connect.to
http://mathforum.org/library/view/10978.html
news://news.gmane.org/gmane.comp.lang.c++.perfometer
=====================================

Jul 19 '05 #6

P: n/a

"Fred" <fr***********@sysde.eads.net> wrote in message news:33*************************@posting.google.co m...
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...news.dfncis.de
http://news.gmane.org/gmane.comp.lang.c++.perfometer/
news://news.gmane.org/gmane.comp.lang.c++.perfometer

http://www.eventhelix.com/RealtimeMa...erformance.htm
http://www.eventhelix.com/RealtimeMa...rformance2.htm
http://www.eventhelix.com/RealtimeMa...AndCPPCode.htm

--
=====================================
Alex Vinokur
mailto:al****@connect.to
http://mathforum.org/library/view/10978.html
=====================================

Jul 19 '05 #7

P: n/a
"Alex Vinokur" <al****@bigfoot.com> threw a soggy newspaper against the
wall, and here's what stuck:
"Paul M. Parks" <pa********@hNoOtSmPaAiMl.com> wrote in message
news:Xn*******************************@216.168.3.4 4...

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/wg2...2003/n1487.pdf


Oops. Thanks for clearing that up.

PMP
Jul 19 '05 #8

P: n/a
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.

Jul 19 '05 #9

P: n/a
In article <33*************************@posting.google.com> ,
fr***********@sysde.eads.net (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
Jul 19 '05 #10

P: n/a
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.

Jul 19 '05 #11

P: n/a
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.

Jul 19 '05 #12

P: n/a
The following articles compare C and C++ performance by comparing the
C++ code with equivalent C code.

http://www.eventhelix.com/RealtimeMa...erformance.htm

http://www.eventhelix.com/RealtimeMa...rformance2.htm

Sandeep
--
http://www.EventHelix.com/EventStudio
EventStudio 2.0 - System Architecture Design CASE Tool
Jul 19 '05 #13

This discussion thread is closed

Replies have been disabled for this discussion.