0
私はView
を拡張し、onDraw(Canvas canvas)
メソッドをオーバーライドするクラスを持っています。このビューはアニメーションを実行するので、onDraw
は毎秒何度も呼び出されます。次の例を考えてみましょう...onDraw()メソッドの最終変数
@Override
protected void onDraw(Canvas canvas) {
final int width = getWidth();
final int height = getHeight();
final int padLeft = getPaddingLeft();
final int padTop = getPaddingTop();
final int padRight = getPaddingRight();
final int padBottom = getPaddingBottom();
final RectF oval = new RectF(padLeft, padTop, width - padRight, height - padBottom);
...
}
私は、この多くの関数が呼び出されるたびonDraw
が起き呼び出すがあることを心配する必要がありますか。 final
は、毎回これらの関数を呼び出す必要はないことをコンパイラに伝えますか?これらの変数は、member variables
として機能する方がよいでしょう。
P.S.自分のプログラムを実行しても、パフォーマンスには影響しないことがわかります。私は学習の観点からこの質問をしています。私が何をしているのか正確に知っていると気分が良くなります。
はい、私はかなり最終的なキーワードは、変数の最適化を行うことができることをコンパイラにも示唆しています。 – dfetter88
最適化とはどういう意味ですか?いいえ、代用関数呼び出しを行うことはできません。はい、メインメモリからこの変数をリロードする必要はありません。詳細はこちらhttp://stackoverflow.com/questions/6602922/is-it-faster-to-access-final-local-variables-than-class-variables-in-java –
お役立ち情報だから、関数呼び出しを避ける唯一の方法はメンバ変数を作ることです。 – dfetter88