so in simple words it's Reliability (C++) VS Performance (C) ?
Not really...It all depends on the skill of the person using the tool.
e.g. you can write a checked pointer to an array which checks array access in debug mode, but compiles out in release mode. So you get the same speed as C, with additional checks in debug mode.
I've never seen a hashmap implemented in C, so this in this respect C++ could be considered faster.
In theory a virtual function call is faster than C code littered with if statements because branches can stall the processor instruction pipeline.
so in simple words it's Reliability (C++) VS Performance (C) ?
No, it is type safety vs no type safety.
There are some pipeline performance hits you can take in C++. For example, iterators work using the overloaded operator>>s, so directly iterating over a byte stream using the standard stream iterators is slow in C++. You can overcome this easily enough, though, and work just as quickly and efficiently as in C.
I mostly worked on C.
and lil bit on C++.
As per my experience, i think, If you know your project deeply. You can implement it either language (C or C++) .
No much diff in performance and no much diff in Reliability, if you have deep knowledge of language ...
I also mostly work in C. I just find it simpler to write something quickly in C than C++ (although that's probably a matter of experience -- I have far less of it with C++).
The reason is actually that there are a lot of hooks in the pipeline for the ifstream::get() function (locale conversions, wide/narrow, etc), where there are none in C. The trick is to write yourself an istream iterator that works by getting bytes directly from the underlying filebuf, then the speed should jump back up. (I haven't tested this yet, though.)