Je cours quelques tests pour mon projet écrit en Java, sur les images. J'ai un résultat intéressant et je n'arrive pas à comprendre pourquoi. Voici les lignes d'initialisation de BufferedImage
et Image
.Pourquoi BufferedImage est-il initialisé plus vite que Image
File[] files = new File("C:\\Users\\SAMSUNG\\Desktop\\img\\").listFiles();
time = System.currentTimeMillis();
for (File f:files){
Image img = ImageIO.read(f);
}
System.out.println((System.currentTimeMillis() - time) + " miliseconds.");
PRENEZ GARDE: Ces deux opérations sont gérées séparément. Je cours le dessus, le processus se termine, je veux dire en réalité se tue finit, que je cours le dessous. Je suis conscient que l'exécution de ceux-ci dans une course peut affecter les résultats que j'essaye d'atteindre les mêmes fichiers, pour que je les exécute séparément. Les résultats sont près de 40 minutes. Cependant, l'initialisation BufferedImage
est toujours une minute plus rapide que l'initialisation Image
. Pourquoi donc? Je fais les tests trois fois et le résultat est le même.
Ce test n'est pas valide, vous appelez la même méthode mais vous l'affectez avec un type différent. –
Vous pouvez également constater que la première boucle met en cache les résultats d'image dont la deuxième boucle profite (sans avoir besoin de relire l'image) – MadProgrammer
Il n'y a aucune différence dans l'initialisation. Tout ce qui est différent est le type de référence auquel vous attribuez le résultat de 'ImageIO.red (f)'. La raison a été donnée par iluxa: lorsque la deuxième boucle est lancée, hotspot a déjà eu la chance d'optimiser le code. – Axel