質問

今の私は、書き込みしようとしている私のプログラムでは、ボトルネックを持っています。私はUIImageの規模を制御するために、ピンチジェスチャーを使用しようとしています。プログラムが遅くかつ不安定になることを引き起こしているスケールのその計算。以下の式である。

currentScale = (currentDistance / initialDistance) * scaleMod;
scaleModはこれまでに、現在の規模は、ユーザーが画面の外に自分の指を取ったものです。次回ので、ユーザーは古いスケールは、本質的に新しいスケーリングアクションの開始点であるピンチん。

役に立ちましたか?

解決

currentDistanceが変化している間、

1)あなたは一度scaleMod / initialDistance計算することができません。除算ます。

を削除するだけ、その値の倍のcurrentDistanceを行う必要がありそうすれば、

2)必ず、これは実際にはボトルネックであることを確認してください。あなたが本当に何か間違ったことしない限り、それは最も可能性が高い、ではありません。

他のヒント

は3 VARSの任意のタイプについて、この計算は簡単少しパフォーマンスへの影響と、毎秒何百万回を行うことができます。あなたの問題は、他の場所です。

あなたは2の累乗にscaleModとinitialDistanceを修正する場合は、

あなたはより速く、乗算や除算のためのシフトを使用することができます。

を参照してください。ここで参照のます。

あなたはscaleMod / initialDistanceを格納することができます。スケーリングはcurrentDistanceによって値が必要に応じて乗算することを、(ユーザーの指が画面上に残っている)アクティブなときます。

ユーザーが完成ピンチを持っていたら、

、たまたまピンチ次回のために新しいscaleMod / initialDistance値を格納します。

あなたはint型(または他の整数)で計算を行っている場合、彼はfloat精度を使用してそれを行うことができれば、参照してください。浮動小数点除算が速く整数より(あなたのCPUを想定分割に少ないビット)である)、浮動小数点ユニットを有している。

また、逆数で乗算として区分外要因にしようとします。

そのInitialDistanceをチェック!= 0最初に! :)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top