现在我的程序中有一个瓶颈,我正在努力写作。我正在尝试使用捏手势来控制UIImage的比例。它计算的程序导致程序减速并变得不连贯。下面是等式。
currentScale = (currentDistance / initialDistance) * scaleMod;
scaleMod是用户将手指从屏幕上移开的当前比例。因此,下次用户进行捏合时,旧刻度本质上是新缩放操作的起点。
答案 0 :(得分:2)
1)当currentDistance正在改变时,你不能计算scaleMod / initialDistance
一次。这样你只需要将该值乘以currentDistance,即可消除除数。
2)确保这实际上是瓶颈。它很可能不是,除非你做错了什么。
答案 1 :(得分:2)
对于任何类型的三个变量,这种计算可以很容易地每秒进行数百万次而对性能影响很小。你的问题在别处。
答案 2 :(得分:1)
如果你将scaleMod和initialDistance固定为2的幂,你可以使用shift来加快乘法和除法。
答案 3 :(得分:0)
您可以存储scaleMod / initialDistance。当缩放处于活动状态时(用户的手指仍然在屏幕上),根据需要将该值乘以currentDistance。
用户完成捏合后,存储新的scaleMod / initialDistance值,以便下次进行捏合。
答案 4 :(得分:0)
如果你用int(或其他整数)进行计算,看看他是否可以使用float精度来做。浮点除法比整数更快(假设您的CPU具有更少的除法位)具有浮点单位。)
同样,尝试将除法分解为乘以倒数。
答案 5 :(得分:0)
首先检查InitialDistance!= 0! :)