Une petite suite aux échanges de ce post sur les perfs
Ce n'est pas une question mais je ne résiste pas à l'envie de raconter une aventure qui m'est arrivée hier.
Je tente de réaliser un codeur/décodeur et plusieurs stratégies s'offrent à moi.
Donc je fais des tests (un peu stupides) en exécutant un million de fois un codage. -> résultat N millisecondes
puis je refais le même test avec codage ET décodage et là nouveaux résultats inférieurs aux précédents
je me frotte les yeux! comment se fait-ce qu'en faisant plus j'obtienne moins?
Bon je regarde mon code de test:
- eh! je ne fais pas d'abord les codages puis ensuite les décodages mais je fais dans ma boucle un million de fois un codage puis un décodage
- l'optimiseur JIT doit faire quelque chose ...
- et effectivement une observation avec visualGC montre que rapidement il y a une modification de comportement (avec quelque chose ajouté au permGen space).
ça m'ennuie alors je décide de garder en mémoire les résultats du codage pour ensuite les exploiter au décodage -> résultats bizarres jusqu'à ce que je m'aperçoive de problèmes mémoire (taille des espaces + fuites mémoire).
Donc pour obtenir des résultats qui semblent vouloir dire quelque chose il a fallu consacrer pas mal de temps à l'environnement de test! (et c'est pas encore parfait : il y a à un endroit une petite anomalie de perfs. sûrement due au GC)
mais j'ai quand même quelques indications suffisamment parlantes pour comparer mes stratégies.... Ouf.
Partager