重複の可能性:
Javaの配列またはリスト。どちらが速いですか?
Javaで単純な配列よりもArrayListを使用する方がはるかに費用がかかりますか?私はたくさんのArrayListを持っていて、いくつかの場所で配列を使用できますが、それらすべてを置き換える手間をかけるべきかどうかわかりません。
具体的には、配列に演算子[]を使用するよりも、ArrayListのgetの方がコストがかかると想像できます。
ありがとう
重複の可能性:
Javaの配列またはリスト。どちらが速いですか?
Javaで単純な配列よりもArrayListを使用する方がはるかに費用がかかりますか?私はたくさんのArrayListを持っていて、いくつかの場所で配列を使用できますが、それらすべてを置き換える手間をかけるべきかどうかわかりません。
具体的には、配列に演算子[]を使用するよりも、ArrayListのgetの方がコストがかかると想像できます。
ありがとう
それは少し高価です。データのサイズが固定されておらず、データを反復処理する以外のことを行う場合は、ArrayList
読みやすさとシンプルさを高めるために使用する価値があります。
唯一の例外は、プリミティブ配列が勝つ可能性が高いプリミティブ型の場合です。
ドナルド・クヌースは、最適化について次の2つのステートメントを作成しました。
「私たちは小さな効率を忘れるべきです。たとえば、97%の確率で:時期尚早の最適化はすべての悪の根源です」(ウィキペディアから)
つまり、Java配列を使用する必要があることを示すベンチマークがない限り、開発者として役立つものを使用してください。私の意見では、これはArrayListです。
一般的に言って、本当に時間に敏感なことをする必要がある場合、vsの使用はArrayList
ボトルObject[]
ネックになることはありません。データベースクエリ、ネットワーク通信、ディスクアクセス、最適化されていないアレイなどは、はるかに悪化します。
ArrayList
同期されていないため、特に要素を追加する前にサイズを指定した場合、パフォーマンスは通常、より大幅に低下することはありObject[]
ません。
アプリケーションのコストの非常に高い割合は、その設計、開発、および保守です。比較すると、アプリケーションの実行コストは通常非常に小さいため、心配する価値はありません。したがって、効率について考えるときは、効率と、アプリケーションを維持しなければならない人について考える必要があります(アプリケーションが役立つと仮定します;)
パフォーマンスが問題となるアプリケーションがあるとします。よくある間違いは、パフォーマンスの問題がどこにあるかを推測し、それらを「最適化」することです。このアプローチの問題は、通常、
あなたがする必要があるのは、いくつかの現実的なテストを実行し、特定の測定可能なビジネス要件を超えるパフォーマンスのボトルネックを測定することです。
主要なボトルネックに変更を加えたら、システムを再テストして、システムが本当に役立つことを確認する必要があります。