我的程序大部分时间都花在objc_msgSend上.这是否意味着Objective-C表现不佳?

bas*_*ibe 1 performance cocoa drawing objective-c

我编写了一个具有许多自定义视图的应用程序,通常会绘制很多行和位图.由于性能对应用程序来说有点关键,我花了很多时间来优化绘图性能.

现在,活动监视器告诉我,我的应用程序通常使用大约12%的CPU和仪器(分析器)表示花费了大量10%的CPU objc_msgSend(主要用于绘制相关的系统调用).

一方面,我很高兴这一点,因为这意味着我的绘图速度和它的速度一样快,我的优化也取得了巨大的成功.另一方面,它似乎意味着仍然使用我的CPU的唯一事情是messages(objc_msgSend)的Objective-C开销.因此,如果我在Carbon中编写应用程序,那么它的性能将会大大改善.

现在我很想得出结论,Objective-C是一种表现不佳的语言,尽管Cocoa似乎效率非常高,因为它显然可以比Objective-C发送消息更快地绘制.

那么,Objective-C真的是一种表现不佳的语言吗?你觉得怎么样?

Dav*_*ong 9

不,Objective-C的表现并不差.为了证据,我引用了@ bbum关于objc_msgSend的手动优化组装的系列文章:

  1. 路线图
  2. 设置舞台
  3. 快速通道
  4. 方法查找和一些可能性和结束

换句话说,objc_msgSend很快; 方法调度不是你的问题.您是否可以发布导致您相信的分析信息?您可能误读了分析,或者您正在做一些非常奇怪的事情,等等.

但我保证你objc_msgSend不是问题所在.如果是的话,我们现在肯定会听说过它.:)