Java
Code
for (String file : listImage) { File targetFile = fs.getImageNameFromExif(file); if (targetFile != null) { try { FileUtils.copyFile(new File(file), targetFile); } catch (IOException e) { fs.error.append(e.getMessage()); } } }
Résultat
C'est long ! 12 minutes de copie. Il y a 10 Go de données. Je testerais par la suite combien de temps un simple copier / coller prendrais.
PHP
Code
Pas besoin d'aller chercher loin. La fonction copy suffira.
//On parcours les images. foreach ($fs->listImages as $file) { //On récupère le chemin cible et le nom de fichier $target = $fs->getImageNameFromExif($file); //On créé le dossier cible $dir = $targetBase."/".$target["dir"]; if (!file_exists($dir)) { mkdir($dir, 0777, true); } //On copy le fichier à proprement parlé $targetPath = $dir."/".$target["src"]; if (!copy($file, $targetPath)) { array_push($err, "cannot copy ".$file." to ".$targetPath); } }
Résultat
Attention, avant d’exécuter penser à bien supprimer les fichiers copiés par la précédente méthode en java, sans quoi le test serait différent.
C'est long aussi ! 11 minutes, c'est un peu mieux mais au final comme la récupération des données EXIF prenait 1 minutes de plus on arrive à la même performance.
C'est long aussi ! 11 minutes, c'est un peu mieux mais au final comme la récupération des données EXIF prenait 1 minutes de plus on arrive à la même performance.
C#
Code
Je vais utiliser la class FileSystem qui a l'avantage de créer les répertoires manquants.
foreach (string file in p.files) { string target = p.getImageNameFromExif(file); FileSystem.CopyFile(file, target, true); }
Résultat
C'est un peu mieux, on est à 8 minutes environ. Ca reste long mais c'est tout de même 1/3 de moins que le java.
Bilan
Au final le C# est le plus performant. Malgré un moins bon temps pour la lecture des données EXIF les performances liées aux accès file system ce langage est en tête même si les différences ne sont pas flagrante avec peut être le PHP en peu en retrait.
Pour info un copier / coller de l'ensemble de ces images a pris un peu plus de 7 minutes.
Aucun commentaire:
Enregistrer un commentaire