c versus c++, performance wise

F

Fred

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
 
A

Andrew Koenig

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

Peter van Merkerk

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

Andrey Tarasevich

Fred said:
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...
 
A

Alex Vinokur

Paul M. Parks said:
(e-mail address removed) (Fred) threw a soggy newspaper against the
wall, and here's what stuck:


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:[email protected]
http://mathforum.org/library/view/10978.html
news://news.gmane.org/gmane.comp.lang.c++.perfometer
=====================================
 
A

Alex Vinokur

Fred said:
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/[email protected]
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:[email protected]
http://mathforum.org/library/view/10978.html
=====================================
 
E

E. Robert Tisdale

Fred said:
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.
 
D

Dave Baum

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
 
L

lilburne

Fred said:
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.
 
D

Dimitris Kamenopoulos

Fred said:
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.
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Staff online

Members online

Forum statistics

Threads
473,734
Messages
2,569,441
Members
44,832
Latest member
GlennSmall

Latest Threads

Top