Blog

Un million de photos réelles : ce que nous avons mesuré pour la 0.2.0

Une analyse complète de 10⁶ JPEG, une suite de release sans perte silencieuse, et les chiffres qui ne tiennent pas encore leur objectif. Mesures publiées, limites comprises.

Le cahier des charges d’Obscura Trace demande de tenir un million de fichiers et dix téraoctets sur un Mac ordinaire. Avant de publier la 0.2.0, nous avons fait analyser par l’application un million de photographies réelles. Voici ce qui tient, et ce qui ne tient pas encore.

Toutes les mesures ci-dessous ont été prises le 9 octobre 2026 sur un MacBook Pro Intel Core i9-9880H, 64 Gio de mémoire, SSD interne, build de release. Apple Silicon n’est pas encore mesuré pour l’inventaire réel.

Le fonds : un million de JPEG réels

Ce ne sont pas des fichiers vides. Le fonds est fait de 10⁶ JPEG réels écrits par ImageIO, 2,65 Go au total, avec la composition d’une vraie photothèque :

  • 80 % d’originaux ;
  • 10 % de copies exactes ;
  • 10 % de doublons visuels.

Chaque mesure tourne dans un processus neuf. Le pic de mémoire est lu par le noyau, pas échantillonné.

Ce qui tient

L’analyse complète va au bout. Les cinq phases s’enchaînent : parcours, métadonnées, hachage, analyse des images, index de similarité. Le million de fichiers est inventorié, avec un pic de 659 Mio, sous le plafond de 2 Gio que nous nous sommes fixé. Elle a duré 52 minutes, sur une machine partagée avec d’autres calculs.

Les déplacements sont retrouvés exactement. Sur un volume sans identifiant de fichier stable, comme un disque exFAT ou un partage SMB, chaque fichier a été déplacé dans un autre dossier.

  • Sans empreinte complète : 990 054 propositions de rapprochement, exactement le nombre attendu.
  • Avec l’empreinte complète : 800 000 fichiers rapprochés par leur contenu. Les 100 000 cas ambigus, deux copies identiques pour un seul disparu, n’ont jamais été rapprochés au hasard.

Le manifeste est fidèle. Le manifeste d’un transfert d’un million de fichiers s’écrit avec une mémoire plate : 29,6 Mio, contre 28,5 Mio pour cent mille. Relu, il ne contient aucun SHA-256 différent du journal.

Un défaut quadratique a été trouvé et corrigé. Dix mille images entièrement noires ont toutes la même empreinte visuelle. Les comparer deux à deux coûtait 1,5 × 10⁸ comparaisons, contre une seule désormais. Sur le million de fichiers, la dernière phase de l’analyse est passée de plus d’une heure (arrêtée) à 42 secondes.

La suite de release : zéro perte silencieuse

Chaque version passe une suite de dix scénarios avant publication. Pour la 0.2.0, les dix passent :

  • inventaire de 10⁶ entrées ;
  • archive de 10 To ;
  • arrêt brutal et reprise ;
  • disque débranché ;
  • détection des doublons ;
  • intégrité des copies ;
  • collisions de noms ;
  • migration du catalogue ;
  • frontières d’architecture ;
  • audit des décisions.

Pertes silencieuses : 0.

Deux précisions honnêtes. L’inventaire de la suite est synthétique : c’est l’analyse ci-dessus qui le complète par de vrais fichiers. Les 10 To sont déclarés au catalogue et au plan, pas recopiés octet par octet.

Ce qui ne tient pas encore

Les objectifs internes demandent que la mémoire ne croisse pas avec la taille du fonds : un pic à 10⁶ au plus trois fois celui à 10⁵. Plusieurs mesures dépassent ce rapport.

Mesure10⁵10⁶Rapport
Analyse complète142 Mio659 Mio4,6
Relecture d’un manifeste327 Mio2 871 Mio8,8
Aperçu d’un renommage par lots170 Mio1 181 Mio7,0
Rapprochement des déplacements215 Mio1 376 Mio6,4

Les résultats restent justes. Mais un très grand fonds demande plus de mémoire qu’il ne devrait. Chacun de ces écarts a son ticket et sera corrigé avant la version 1.0.

Une autre mesure a révélé un défaut. Une analyse tuée à mi-parcours puis reprise donne les mêmes groupes, les mêmes membres et les mêmes masters, sans aucune empreinte contradictoire. Elle a pourtant relu en entier bien plus de fichiers que nécessaire : 899 841 SHA-256 complets au lieu de 200 000. La cause n’est pas l’interruption : toute seconde analyse relit les fichiers inchangés qui partagent leur taille avec un autre. Le guide le dit désormais, et la correction est en cours.

Pourquoi publier ces chiffres

Un logiciel qui touche à des archives irremplaçables ne devrait pas dire « rapide » ou « fiable » sans montrer la mesure. Ces chiffres sont ceux de la version que vous téléchargez, limites comprises. Ils sont rappelés au chapitre FAQ, limites actuelles et glossaire du guide et dans le changelog.

← Tous les articles