[Java]Optimisation pour tableaux

Bien le bonjour à tous,

Les tableaux c’est bien.
Mais en Java, on a accès à une tonne de classes capables de se substituer au classique Array. Outre la possibilités de faire plein de choses carrément plus simplement, il est aussi question de performances.
Si je viens ici, c’est pour connaître votre avis concernant ma façon de procéder sur mon projet actuel et savoir s’il est possible d’améliorer les performances grâce à toutes ces merveilleuses classes possédant l’interface List.

Explication du barzing:
Je dois stocker des coordonnées xyz d’objets en mémoire ( pas plus de 10 objets, rangés proprement dans une Hashtable ) pour un laps de temps relativement court ( 1 seconde maxi pour chaque coordonnée ). Pour chaque objet, je stocke les 5 dernieres coordonnées, la coordonnée entrante, la plus récente donc, chassant la plus ancienne.
Sur ces coordonnées, il sera fort vraisemblable qu’un calcul mathématique soit fait, voire plusieurs.

Pour l’instant j’ai fait ça plutôt crade, juste pour vérifier en gros la consommation en ressources du machin.
Mais maintenant, il s’agit d’optimiser ça aux petits oignons, et j’ai pas vraiment le temps de faire 15 millions de tests pour savoir quel algo me fera gagner 0.0015ms de traitement par rapport à un autre.
Sans me prendre la tête, en restant sobre et léger, je songe à n’utiliser que des tableaux très classiques, et à chaque arrivée d’une nouvelle coordonnée, je jongle avec les pointeurs ( façon de parler ).

Maintenant, y a t’il une classe vraiment spécialement dédiée à ce genre de manipulation pas forcément compliquée, mais surtout très fréquente, rapide en écriture et aussi en lecture et qui me faciliterait significativement la tâche ?
Merci d’avance de vos conseils ! :stuck_out_tongue:

Un FIFO comme ca c’est une Queue, t’en as en Java, sinon tu peux faire un buffer circulaire ou un truc comme ca.

Pourquoi pas une liste chaînée ?

Non pas de liste chainée pour ca…

Comme dit glop une liste FIFO (queue), la suppression et l’insertion de la valeur sont en O(1)… Après je connais pas les nom des classes exactes dans java…

ok, j’aurais dû préciser: la classe LinkedList implémente une liste doublement chaînée, donc l’ajout/suppression en tête ou en queue se fait aussi en O(1)…

D’un point de vu algo, c’est clair que ce qu’il faut c’est une FIFO
Après d’un point de vue implem, tu as le choix entre ArrayList et LinkedList

Visiblement, d’après cet article (je l’ai pas lu en entier :P), il faut utiliser une LinkedList

Au fait, c’est pas prévu pour un accès multi-threadé ton truc ? Sinon ca change tout

http://java.sun.com/j2se/1.5.0/docs/api/java/util/Queue.html
Fais ton choix.

[quote=“viewww, post:6, topic: 28662”]D’un point de vu algo, c’est clair que ce qu’il faut c’est une FIFO
Après d’un point de vue implem, tu as le choix entre ArrayList et LinkedList

Visiblement, d’après cet article (je l’ai pas lu en entier :P), il faut utiliser une LinkedList

Au fait, c’est pas prévu pour un accès multi-threadé ton truc ? Sinon ca change tout[/quote]

Non, effectivement j’ai oublié de le préciser, il y aura un thread pour gérer tout ça et un seul.

Merci de vos réponses en tous les cas !