从语言层面的处理机制上讲,面向对象的方式肯定比面向过程的方式效率要低一些。所以,对性能要求高的,例如操作系统、驱动程序、网络设备程序都是由C语言编写的。(C语言虽然提供的编程模式是面向过程的,但是同样可以以面向对象的思想来写程序,只是它没有太多机制支持面向对象方式编写程序,不是很方便而已。)
很多人认为面向对象的效率会导致性能很差,经常用C语言和JAVA语言做比较来说明观点。
程序系统的运行效率更大的取决于设备的IO速度。
CPU:每秒10亿次,性能是纳秒级
内存:每秒1000万次,每次请求时间是微妙级
磁盘:每次5ms,请求时间是毫秒级
网络(TCP):每次网络交互2ms,毫秒级
数据库:基本等于网络和磁盘之和,甚至更慢
可以看到,如果业务流程中涉及到了磁盘、网络、数据库,那么性能将降低到毫秒级。
对于大部分语言,语言本身的运行速度是内存级别,也就是微妙级的。
假设,一个业务流程:
C语言处理的速度是:语言本身10微妙 + 磁盘操作5豪秒 = 5.01ms
JAVA处理速度:语言本身100微妙 + 磁盘操作5豪秒 = 5.1ms
语言本身的性能差距在整个流程中的提升可以看作是微乎其微。
因此,对复杂的业务系统,性能的高低是由系统的架构设计决定的,不是由语言本身决定的。