风暴俱乐部|面向对象的两大迷思,再给你们解答一次
面向对象是目前最流行的一种程序设计和实现思想 。 无论从事企业级开发、互联网应用开发 , 还是手机软件开发 , 都会用到面向对象的技术 。
在主流的编程语言中 , C++、Java、C#、PHP、Python等都是支持面向对象的语言;在编程排行榜前十的语言中 , 面向对象的编程语言能够稳定占据7~8席……
所有的这些现象 , 都展示了面向对象的流行程度和受欢迎程度 。 但即使这样 , 仍然存在一些歪理邪说在坊间流传!
下面我们就对其中流传较广的两条逐个击破!
- 面向对象会导致性能降低?
- 面向对象语言=面向对象编程?
▼ 扫码获取本书详情 ▼
迷思1:面向对象会导致性能降低?
这是一个在IT江湖流传已久的传说 , 很多对面向对象不甚了解 , 或者一知半解的人 , 每当需要抵触面向对象的时候 , 就会把这条“金科玉律”拿出来救驾!
更要命的是 , 每个相信这个传说的人都会举一个看起来很显而易见的例子:C语言和Java的对比!
你可以在网上搜索出一大堆C语言和Java的性能对比 , 你也可以做一个简单的对比测试 , 我毫不怀疑测试结果肯定是C语言快 , 但这能证明面向对象导致性能降低吗?
从语言层面来说 , 面向对象的语言肯定要比面向过程的语言性能低一些 , 毕竟这是由处理机制决定的 , 就像不同的人的差别由基因决定一样 , 这个很难改变 。 所以 , 对性能要求很高的系统软件 , 例如操作系统、驱动程序、网络设备程序基本上都是用C语言编写的 。
但在实际应用中 , 除了前面提到的专有系统(操作系统、驱动、嵌入式等) , 对一般的业务系统来说 , 无论是企业级应用 , 还是互联网应用 , 抑或是电信银行应用 , 都是复杂的系统 , 这些系统要和存储系统(磁盘、磁带等)打交道 , 要通过网络进行交互 , 要访问数据库……
我们看一下常见的一些性能数据(量级数据 , 不一定精确) 。
- CPU:每秒10亿次 , 性能是纳秒级 。
- 内存:每秒1000万次 , 每次请求时间是微秒级 。
- 磁盘:每次请求5ms , 请求时间是毫秒级 。
- 网络(TCP):每次网络交互2ms , 请求时间是毫秒级 。
- 数据库:基本等于网络与磁盘之和 , 甚至更慢 。
而对于大部分开发语言来说 , 语言本身的运行速度至少是内存级别的 。
试想一下 , 在整个流程中 , 语言本身的处理占了微秒级的时间 , 而一次磁盘或者网络的时间是毫秒级的 , 那么从全流程来看 , 就算你把语言本身的处理速度提高了10倍 , 但对整个流程来说 , 性能几乎没有受到影响 。
例如 , 假设C语言全流程处理时间为:10μs(语言部分)+ 5ms(磁盘操作)= 5.01ms 。
如果换成Java , 那么处理时间变成:100μs(语言部分)+ 5ms(磁盘操作)= 5.1ms 。
推荐阅读
- 南方PLUS|高新区面向全市征集30项以上技术需求,@佛山企业
- 虎扑足球|巴黎也是一样,莱昂纳多:任何俱乐部要签人都得先卖人
- M体育地带|青春风暴!意媒排出米兰U23首发阵容
- 魏翊东|罕见!京媒名嘴魏翊东怒怼国安俱乐部:瞻前顾后的,你在怕啥?
- 平地一声雷|你在怕啥?,罕见!京媒名嘴魏翊东怒怼国安俱乐部:瞻前顾后的
- 大宗交易|方洪波减持13亿元,美的:个人资产配置需要,三季度基本面向好
- 国内赛事|最具眼光的俱乐部!IG.Y再次夺得夏季赛冠军 焕烽发文祝贺
- 维特尔维斯塔潘|青春风暴席卷F1意大利站领奖台 加斯利能跟随维特尔维斯塔潘的步伐吗?
- 青年|兰陵王:我打不过风暴龙王,凯:我勉强打得过。他:这不难很轻松
- 舌尖尝美食美味|7000万欧!曼城即将签约意甲铁卫,双方达个人协议只差俱乐部点头