C++的开发效率肯定是高于C的,高一倍没压力,所以可以用省下来的开发时间去做性能优化。
一般来说,没有优化过的C++代码用 Profiling工具压榨出2~4倍的性能是很可能的。
而用C就算性能好,也没好到C++的3~4倍,好10~30%就不错了。
极端优化后的代码,C要好于C++,但是相同时间内开发出来的代码 C++性能会好于C,而且C++可读性可维护性要远远好于C。
我也曾经试着用C写,可结果发现开发效率、代码可读性,都不是一个档次的。最后才明白,发明C++的人确实是为了解决一些问题,而不是闲的蛋疼。
--------------------
由于第一次获得这么多赞,我补充一下。
当初我是非常讨厌C++语言的,我认为C++能做的C都能做,它只是个语法糖而已,简单才是最美的,为什么我要去浪费时间研究那些诡异的特性。
后来慢慢的我对C++的态度变了,现在我觉得C++虽然不完美,但是够用。它比C可读性好,做到了开发效率和运行效率的折中,是我写代码的首选语言。
C++有一个重要的指导思想,叫做zero-overhead principle,一般翻译成「零开销抽象原则」,英文的描述是:What you don’t use, you don’t pay for (in time or space) and further: What you do use, you couldn’t hand code any better. 大概的意思就是说你在使用C++的时候,你不用为你不需要的功能付出时间和空间上的成本;你需要使用某个功能的时候,你直接手撸的代码不会比C++已经实现的功能更好。
重点在第二句,可以这样理解:对于C++里面已经实现的一个功能,你无法『用C』写出一个比它更好的实现。也就是说,如果嫌弃C++某个功能实现复杂臃肿,你自己用C去实现一个,写了一大堆代码,最终在时间和空间复杂度也不会比C++的更好。说白了就是吃力不讨好,耗费时间精力的事情C++已经帮你做好了。
只要知道C++的指导思想是领开销抽象原则,就不会怀疑稍微复杂一点的功能为什么更应该选择C++而不是C,因为你用C实现出来的,不会比C++的更好。你想要的东西,无非只是C++编译器几十年来一直在做的事情而已。
正因为如此,连C编译器都已经改用C++实现。better C不是作为口号喊喊而已。
欢迎关注个人公众号「树屋编程」,目前主要是C/C++相关。我每周会抽出1~3小时写一篇文章发上去,关于zero-overhead principle,我以后应该也会发一篇详细的带例子的。
评论区因为有人吵架我关闭了