C程序员经常抵制C++在高性能应用程序中的使用。他们声称C++语言本质上比C语言或类似的过程语言低效,因为C++包含了高层次的概念,例如异常和虚拟方法。然而,这种方法是有问题的。
首先,不能忽略编译器的作用。在讨论语言效率时,必须把语言的性能和编译器优化这个语言的效果分离。计算机执行的并不是C或C++代码。编译器首先将这个代码转换成机器语言,并在这个过程中进行优化。这意味着,不能简单地运行C和C++语言的基准测试并比较结果。这实际上比较的编译器优化语言的效果,而不是语言本身。C++编译器可以优化掉语言中很多高层次的结构,来生成类似于C语言生成的机器码。
然而,批评者仍然认为一些C++特性不能被优化掉。例如,虚拟方法需要存在一个vtable,在运行时需要添加一个间接层次,因而比普通的非虚拟函数调用慢。然而,如果仔细思考,会发现这种说法仍然难以令人信服。虚拟方法调用不止是一个函数调用:还要在运行时选择调用哪个函数。对应的非虚拟函数。C++语言的一般设计原则是:“如果不使用,则不需要付出代价。”如果不使用虚拟方法,那么不会因为能够使用虚拟方法而损失性能。因此,在C++中非虚函数的调用在性能上等同于C语言中的函数调用。然而,由于虚函数调用有一个这么小的开销,因此建议将所有的类方法,包括析构造函数,设计为虚拟方法。
更重要的是,通过C++高层次的结构允许编写更干净的程序,这些程序在设计的层次更加高效,更容易维护,避免积累不必要的代码和死代码。
我们相信,如果选择C++语言而不是过程式的语言,在开发、性能和维护上会有更好的结果。
★关于WorkWin公司电脑监控软件★
WorkWin的使命是打造Work用途的Windows 电脑系统,有效规范员工上网行为,让老板知道员工每天在做什么(监控包括屏幕、上网在内的一举一动),限制员工不能做什么(禁止网购、游戏、优盘等)。
WorkWin基于纯软件设计,非常容易使用,无需添加或改动任何硬件,使用一台管理机监控全部员工机电脑。历经南京网亚十余年精心打造,此时此刻每天都有成千上万企业电脑正在运行WorkWin,选择WorkWin选择“赢”。
版权所有,南京网亚计算机有限公司 。本文链接地址: C++是不是低效的语言