 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Fred Guest
|
Posted: Tue Oct 28, 2003 4:42 pm Post subject: c versus c++, performance wise |
|
|
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
|
|
| Back to top |
|
 |
Andrew Koenig Guest
|
Posted: Tue Oct 28, 2003 4:44 pm Post subject: Re: c versus c++, performance wise |
|
|
| Quote: | 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.
|
|
| Back to top |
|
 |
Peter van Merkerk Guest
|
Posted: Tue Oct 28, 2003 5:01 pm Post subject: Re: c versus c++, performance wise |
|
|
| Quote: | 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
|
|
| Back to top |
|
 |
Andrey Tarasevich Guest
|
Posted: Tue Oct 28, 2003 6:09 pm Post subject: Re: c versus c++, performance wise |
|
|
Fred wrote:
| Quote: | 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
|
|
| Back to top |
|
 |
Paul M. Parks Guest
|
Posted: Tue Oct 28, 2003 6:17 pm Post subject: Re: c versus c++, performance wise |
|
|
[email]frederic.lamy (AT) sysde (DOT) eads.net[/email] (Fred) threw a soggy newspaper against the
wall, and here's what stuck:
| Quote: | 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
|
|
| Back to top |
|
 |
Alex Vinokur Guest
|
|
| Back to top |
|
 |
Alex Vinokur Guest
|
|
| Back to top |
|
 |
E. Robert Tisdale Guest
|
Posted: Tue Oct 28, 2003 7:19 pm Post subject: Re: C versus C++, performance wise |
|
|
Fred wrote:
| Quote: | 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.
|
|
| Back to top |
|
 |
Paul M. Parks Guest
|
Posted: Tue Oct 28, 2003 7:35 pm Post subject: Re: c versus c++, performance wise |
|
|
"Alex Vinokur" <alexvn (AT) bigfoot (DOT) com> threw a soggy newspaper against the
wall, and here's what stuck:
Oops. Thanks for clearing that up.
PMP
|
|
| Back to top |
|
 |
Dave Baum Guest
|
Posted: Tue Oct 28, 2003 8:05 pm Post subject: Re: c versus c++, performance wise |
|
|
In article <332a00fd.0310280842.5d09ead (AT) posting (DOT) google.com>,
[email]frederic.lamy (AT) sysde (DOT) eads.net[/email] (Fred) wrote:
| Quote: | 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
|
|
| Back to top |
|
 |
lilburne Guest
|
Posted: Tue Oct 28, 2003 8:46 pm Post subject: Re: c versus c++, performance wise |
|
|
Fred wrote:
| Quote: | 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.
|
|
| Back to top |
|
 |
Dimitris Kamenopoulos Guest
|
Posted: Wed Oct 29, 2003 7:49 am Post subject: Re: c versus c++, performance wise |
|
|
Fred wrote:
| Quote: | 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.
|
|
| Back to top |
|
 |
Sandeep Guest
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|