我该如何改进这段代码?

时间:2009-11-23 01:19:08

标签: iphone cocoa-touch

鲨鱼告诉我,这是表现糟糕的热点:

double distanceA = fabsf(target - current);

目标是CGFloat 当前是CGFloat

我的其余计算依赖于双倍。也许还有一些更明智的方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:6)

除非您需要距离的双倍精度,否则请更改浮动距离。 CGFloat被定义为iPhone上的浮点数,fabsf()获取浮点值并返回浮点值。处理双精度值时,iPhone的标准浮动速度要慢得多。

事实上,对你的距离变量使用双精度是没有意义的,因为你已经通过fabsf()运行计算而失去了精度,而fabsf()只返回一个浮点数。

答案 1 :(得分:0)

现在不在Xcode附近,但请尝试:

double distanceA = (double) fabsf(target - current);