2009-11-23 88 views
3

我有这样的一段代码,其中鲨鱼告诉我这是一个性能瓶颈:是否有更快的方法来比较两个变量?

CGFloat shortestDistance = (distanceA < distanceB) ? distanceA : distanceB; 

所有这些值CGFloat的。有没有更快的方法来找出哪一个更小,并将其分配给最短的距离?也许甚至通过引用而不是复制一个值?我该怎么做,以后如何访问?

顺便说一句,这是代码在非常严格的循环中执行。每秒约60次。

+0

为什么你自己写这个而不是使用fmin()或fminf()? – NSResponder 2009-11-23 04:44:57

回答

10

每秒60次是而不是一个严格的循环。就现代计算机而言,这非常轻松。

似乎没有一种明显的方法来改善表达;你确定Shark是否表明确切的陈述是一个问题,还是它指出了经常被调用的代码中更常见的问题?

0

从内存来看,现代CPU有6到9个管道,更可能是自上次检查以来。一旦优化器达到它,通常认为CPU很重的实际上很少。

3

要么​​或distanceB(或两者)平方根的结果?鲨鱼踪迹往往会将操作的结果归咎于实际操作缓慢的操作。你是否真的需要取其两者的平方根,还是可以在平方距离上进行选择?

如果失败,(1)在瞄准ARMv6时关闭拇指,(2)使用__builtin_fminf(distanceA, distanceB)。然后继续寻找应用程序中的真正瓶颈;每秒60次无需担心。

相关问题