Quote:
Originally Posted by wull
Totally agree with myNameIsInga.
I once tried to increase the performance of a piece of software written in C# by porting the most time consuming part of it to C++ and compiled it with all thinkable performance settings for execution speed including compiling specifically for the very CPU on which the program was supposed to be running and even in the "benchmark environment" (this is where you will actually get bigger performance gains than in practice) the performance gain for only this time consuming part was not even 5% and for the overall application it would have been even less.
Given the development time, porting was absolutely not worth it even though speed was important and it didn't even take that long to port it, still getting more than 5% faster hardware would have been way cheaper.
Overall I was extremely impressed with the performance of .NET.
Cliffs:
Ported C# software to C++ for performance reasons -> was absolutely not worth it.
.NET's performance is excellent.
|
Just copying C# over to C++ and recompiling is not likely to realize much of the potential performance gain that
does exist with C/C++.
C++ gives you access to things you just cant do in C# (or Java)... stuff like intrinsic functions (or inline assembly), cache control and memory alignment, SSE instructions, etc...
By taking advantage of these things there can be huge performance gains for most non-trivial code sections. I'm talking speedups of 2x, 5x... or more...
Just take the SSE instructions for starters... C# code will not be vectorized to use SSE (actually, until VS11 shows up or you use the Intel compiler, neither will C++ be vectorized by the compiler... you have to use intrinsic funcs). By not using SSE, you're guaranteed that 75% of the register file is wasted.
C# has a lot going for it, but maximizing performance is not one of them.
And to bring it back to the topic... SourceSafe is the worst.