我怎样才能使这个方程更快

时间:2010-01-27 19:40:36

标签: scale performance pinch

现在我的程序中有一个瓶颈,我正在努力写作。我正在尝试使用捏手势来控制UIImage的比例。它计算的程序导致程序减速并变得不连贯。下面是等式。

currentScale = (currentDistance / initialDistance) * scaleMod;

scaleMod是用户将手指从屏幕上移开的当前比例。因此,下次用户进行捏合时,旧刻度本质上是新缩放操作的起点。

6 个答案:

答案 0 :(得分:2)

1)当currentDistance正在改变时,你不能计算scaleMod / initialDistance一次。这样你只需要将该值乘以currentDistance,即可消除除数。

2)确保这实际上是瓶颈。它很可能不是,除非你做错了什么。

答案 1 :(得分:2)

对于任何类型的三个变量,这种计算可以很容易地每秒进行数百万次而对性能影响很小。你的问题在别处。

答案 2 :(得分:1)

如果你将scaleMod和initialDistance固定为2的幂,你可以使用shift来加快乘法和除法。

请参阅here for reference

答案 3 :(得分:0)

您可以存储scaleMod / initialDistance。当缩放处于活动状态时(用户的手指仍然在屏幕上),根据需要将该值乘以currentDistance。

用户完成捏合后,存储新的scaleMod / initialDistance值,以便下次进行捏合。

答案 4 :(得分:0)

如果你用int(或其他整数)进行计算,看看他是否可以使用float精度来做。浮点除法比整数更快(假设您的CPU具有更少的除法位)具有浮点单位。)

同样,尝试将除法分解为乘以倒数。

答案 5 :(得分:0)

首先检查InitialDistance!= 0! :)