题
现在我在我的节目一个瓶颈,我试着写。我试图使用缩放手势来控制一个UIImage的规模。导致该计划放慢脚步,成为波涛汹涌的规模及其计算。下面是方程。
currentScale = (currentDistance / initialDistance) * scaleMod;
scaleMod是什么都目前的规模是用户把他们的手指在屏幕上。因此,下一次用户执行捏旧尺度本质上是新的缩放动作的开始点。
解决方案
1)你不能计算scaleMod / initialDistance
一次,而currentDistance正在改变。这样,你只有做到这一点值倍currentDistance,从而消除一个鸿沟。
2)确保,这实际上是瓶颈。这最有可能是没有的,除非你做的事情真的错了。
其他提示
有关的任何类型的三个VARS的,这种计算可以容易地进行每秒百万次性能影响很小。你的问题是在其他地方。
如果您修复scaleMod和initialDistance到2的幂可以使用更快的乘法和除法的变化。
请参阅这里供参考。
您可以存储scaleMod / initialDistance。当缩放是活动的(用户的手指仍然在屏幕上),乘,作为需要通过currentDistance值。
一旦用户已完成夹持,存储新scaleMod / initialDistance值下一次夹持发生。
如果你正在做一个int(或其他整数)计算,看他是否能使用float精度做到这一点。浮点除法比整数更快(较少的位来划分,假设你的CPU)具有浮点单元)。
另外,尽量因子出分割为由倒数相乘。
检查InitialDistance!= 0第一! :)
不隶属于 StackOverflow