【发布时间】:2012-05-26 11:17:04
【问题描述】:
我有一个方法可以检查NSData 的值,如下所示:
if (data == nil) {
//Method
}
但是,尽管方法中包含所有内容,但事实证明,超过 80% 的时间都花在了第一行,检查 data 是否等于 nil。有没有更有效的方法来做到这一点?
截图:
【问题讨论】:
-
变量在哪里设置?我认为我们需要查看更多代码。
-
是否有可能里面的东西只在 1% 的运行中被执行,因为数据大多是 nil,所以即使它需要更长的时间,它也几乎不会被执行并且总时间更少?
-
@Dani,+1。 @Andrew,我可以向您保证,将指针与
nil进行比较并不昂贵。要么你做了无数次(这意味着你的问题出在其他地方,不管它多久完成一次),要么你的测量不正确或被误解。 -
性能检测可能会令人困惑。指令指针的采样往往发生在分支点,因为这是检查中断的地方,因此在细粒度上,分支通常会被“指责”负责附近花费的所有时间。这种采样实际上只对相当大的代码块有效,而不是在逐条指令级别。
-
错误在于认为
if上的 97% 表示法仅适用于一个语句,而实际上它适用于直到下一个突出显示的行的所有语句。
标签: objective-c ios performance profiling