Apparently, the managed code systems works with piteous performance unless you do things exactly by the paths and ways that is written in the books, in which case it performs quite well.
What do you mean by "exactly by the paths and ways it's written in books"? With any language, you have to understand how it works to get any performance at all. Coding by the seat of your pants in C++ usually results not just in bad perfomance, but in access violations.
Of course, C# isn't just C++ with some new features. You can't really just jump in and start coding in C# just because you know C++. It is much more different from C++ than C++ is different from C. You have to learn it. So if you already have a good understanding of C++, but no intention to learn C# in depth, then you are better off staying with C++ (which is what I decided for myself).
And the game is not only 3D graphics done by GPU, any good game will also have a lot of CPU-driven code.
I'm not saying a game is only graphics. I'm saying that GPU, not CPU, often sets the upper bound on fps, unless you really have a lot of complex code.
The bottom line of what I'm saying is, people often worry about performance penalties of few percent, that are inherent to a higher-level language, and choose a lower-level language because of that - only to get much more serious penalties because lower-level language "distracts" you, with all the low-level stuff, from the big picture of writing efficient algorithms - which is really most important because O(log n) algorithm written in Ruby is more efficient than O(n^2) written in highly optimized assembly.
thanks for the reply guys.I'm currently doing my Bachelor's degree in Computer science. How important do you think learning c# and the .Net really is,for developing small or medium sized applications(hobby) and also for gettting a high paying job??
For hobby, you learn whatever makes you happy. But for a high-paying job, I think you're better off with learning web-development-oriented languages such as Ruby, Python, Perl, etc., maybe Java (assuming you even want to seek a high-paying job in software development). C/C++ is mostly domain of embedded systems and game development. There are tons of very proficient developers with decades of experience in embedded systems industry, so it isn't going to be easy to get in. Games industry might be easier, but for one company that really takes off there are hundreds mediocre ones and thousands that flunk, it's an industry where you work very hard not necessarily to make big money but just to stay afloat. Think for yourself if you want to be in there. C# is a peculiar animal, I don't see it as either web development language or embedded systems programming platform, besides it is rather different from both C++ and Java... as such, am not sure it has a niche for itself at all. If you want to go for .NET, you're probably better off learning ASP or VB. It is of course up to you to view my opinions as overly conservative or merely realistic.
Btw, are there any directx programmers out there? I would like to have somebody who can answer my doubts in it. I'm quite OK with 3d vector math but dont have much knowledge about the fundamentals of rendering and stuff, Is it absolutely essential??
Yes, it is of course essential because you need to work with it to get anything rendered. There's nothing terribly complicated in rendering fundamentals, however, and there are many articles on it online.