どのように私はこの方程式を高速化することができます
-
23-09-2019 - |
質問
今の私は、書き込みしようとしている私のプログラムでは、ボトルネックを持っています。私はUIImageの規模を制御するために、ピンチジェスチャーを使用しようとしています。プログラムが遅くかつ不安定になることを引き起こしているスケールのその計算。以下の式である。
currentScale = (currentDistance / initialDistance) * scaleMod;
scaleModはこれまでに、現在の規模は、ユーザーが画面の外に自分の指を取ったものです。次回ので、ユーザーは古いスケールは、本質的に新しいスケーリングアクションの開始点であるピンチん。
解決
1)あなたは一度scaleMod / initialDistance
計算することができません。除算ます。
2)必ず、これは実際にはボトルネックであることを確認してください。あなたが本当に何か間違ったことしない限り、それは最も可能性が高い、ではありません。
他のヒント
は3 VARSの任意のタイプについて、この計算は簡単少しパフォーマンスへの影響と、毎秒何百万回を行うことができます。あなたの問題は、他の場所です。
あなたはより速く、乗算や除算のためのシフトを使用することができます。
を参照してください。ここで参照のます。
あなたはscaleMod / initialDistanceを格納することができます。スケーリングはcurrentDistanceによって値が必要に応じて乗算することを、(ユーザーの指が画面上に残っている)アクティブなときます。
ユーザーが完成ピンチを持っていたら、、たまたまピンチ次回のために新しいscaleMod / initialDistance値を格納します。
あなたはint型(または他の整数)で計算を行っている場合、彼はfloat精度を使用してそれを行うことができれば、参照してください。浮動小数点除算が速く整数より(あなたのCPUを想定分割に少ないビット)である)、浮動小数点ユニットを有している。
また、逆数で乗算として区分外要因にしようとします。
そのInitialDistanceをチェック!= 0最初に! :)