web-dev-qa-db-fra.com

Array vs ArrayList en performance

Laquelle est la meilleure en performance entre Array de type Object et ArrayList de type Object?

Supposons que nous ayons un tableau d'objets Animal: Animal animal[] Et un arraylist: ArrayList list<Animal>

Maintenant je fais animal[10] Et list.get(10) lequel devrait être plus rapide et pourquoi?

54
Spark-Beginner

Il est assez évident que array [10] est plus rapide que array.get (10), car ce dernier effectue le même appel en interne, mais ajoute la surcharge pour l'appel de la fonction plus des vérifications supplémentaires.

Les JIT modernes vont toutefois optimiser cela dans une certaine mesure, ce qui vous préoccupe rarement, à moins que vous n'ayez une application très critique en termes de performances et que cela ait été mesuré comme un goulot d'étranglement.

65
TwoThe

De ici :

ArrayList est soutenu en interne par Array en Java. Toute opération de redimensionnement dans ArrayList ralentit les performances, car elle implique la création d'un nouveau tableau et la copie du contenu d'un ancien tableau vers un nouveau.


En termes de performances, Array et ArrayList fournissent des performances similaires en termes de temps constant pour ajouter ou obtenir un élément si vous connaissez index . Bien que le redimensionnement automatique de ArrayList puisse ralentir légèrement l’insertion, Array et ArrayList sont des concepts fondamentaux de Java et tout programmeur sérieux Java doit bien connaître ces différences entre Array et ArrayList ou plus. tableau général vs liste.

37
Rahul Tripathi

Lorsque vous décidez d'utiliser Array ou ArrayList, votre premier instinct ne devrait vraiment pas être préoccupé par les performances, même s'il fonctionne différemment. Votre première préoccupation devrait être de savoir si vous connaissez ou non la taille du tableau avant la main. Si vous ne le faites pas, vous irez naturellement avec une liste de tableaux, juste pour la fonctionnalité.

19
Paul Samsotha

Je suis d'accord avec le message récemment supprimé de l'auteur selon lequel les différences de performances sont si minimes que, à de très rares exceptions près (il s'est fait reprocher de ne jamais dire), vous ne devriez pas prendre votre décision de conception en fonction de cela.

Dans votre exemple, où les éléments sont des objets, la différence de performances doit être minimale.

Si vous traitez avec un nombre grand de primitives, un tableau offrira des performances nettement meilleures, à la fois en mémoire et en temps.

11
user949300

Les tableaux ont de meilleures performances. ArrayList fournit des fonctionnalités supplémentaires telles que "supprimer" au détriment des performances.

10
Ankit Rustagi