|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre à l'essai
![]() Inscription : mai 2003 Messages : 98 ![]() |
Bonjour,
Je développe une librairie Java dont le coeur repose sur une queue. En me fiant à la Javadoc, j'ai donc choisit comme implémentation de bases, une ArrayDeque, et j'ai rédigé un petit stress test censé éprouvé la structure. J'ai ensuite comparé les résultats du test avec ceux du même test où la queue est une LinkedList. Et contre toutes attentes, la linkedlist est plus performante. En profilant un peu, je me rend compte que le GC n'est pas appelé avec l'ArrayDeque, alors qu'il l'est avec la LinkedList. Je décide alors de réduire la mémoire allouée (-Xmx512m -Xms512m => -Xmx32m -Xms32m), et l'ArrayDeque redevient compétitive (le GC est alors appelé une fois). Je n'ai pas réussi à extraire un test unitaire simplifié pour montrer le cas en quelques lignes, mais voici les traces des executions: "-Xmx512m -Xms512m -verbose:gc" + ArrayDeque "-Xmx512m -Xms512m -verbose:gc" + LinkedList Code :
Code :
C'est assez étonnant que le GC aide autant la résolution du problème (je précise que le pb est résolu de manière déterministe, et, mis à part celles propres aux structures de queues, les opérations exécutées sont strictement les mêmes dans les 3 cas). Charles |
||||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com