2017-02-09 8 views
-3

パフォーマンスを向上させるか、メモリを最適化するようにコードを作成する必要がありますか?携帯電話のパフォーマンスやメモリを最適化する必要がありますか?

たとえば、findViewById(int resid)メソッドを使用しているとします。
パフォーマンスを最適化するには、ビューをインスタンス変数に保存して、再度呼び出す必要はありません。
メモリを最適化するには、これを保存しませんが、そのビューを再度検索する必要があるたびにこのメソッドを呼び出します。

もちろん、他にもたくさんの例がありますが、これは一般的な考えです:必要なときに同じメソッドを呼び出す(それによってより多くの処理を使用する)か、変数に保存します)?

私はどちらが重要ですか?他のものよりも優れていますか?ありがとう!否決されたリスクのある

+4

「小さな効率を忘れるべきです。時間の約97%を忘れるべきです。早すぎる最適化はすべての悪の根源です。 – nhouser9

+1

バッテリ寿命/メモリ消費/速度に関する問題が実際に表示されるまで、最適化について心配する必要はありません。その時点で、**これらの最適化を行う場所を決定するために使用できる分析ツールがありますので、このようなすべての単一行について心配する必要はありません。現実にはコンパイラの最適化とキャッシングがこのようなことを大事にしているので、問題がどこにあるかを知る前に待ちます。 – nhouser9

+1

コードの_readability_と_maintainability_を第一の関心事として最適化する必要があります。実効Javaも参照してください。[Item 55:賢明に最適化する](http://homepages.dcc.ufmg.br/~rodolfo/dcc030-2-11/Effective%20Java%20Item%2055.htm) –

答えて

0

....

そのコースのすべてが依存するが、findViewByIdのあなたたとえば、一般的なキャッシュにメンバ変数に結果をする必要があります。 RecyclerView.ViewHolderのドキュメントはこのモデルを推奨しています。

しかし、注意してください - あなたがでこれをやろうとしている場合Fragment(例えばonCreateViewfindViewById数回calllingし、結果をキャッシュで)、あなたは(これについては様々な記事がある)リークを取得します。この場合の解決策は、これらのキャッシュされた参照をnullにすることです。onDestroyView

+0

答えは具体的な例ですが、より一般的なガイダンスを探しています。 – nhouser9

関連する問題