Référence de stockage et de synchronisation
Exécutez un benchmark synthétique jetable depuis la racine du dépôt :
cargo run -p memories-core --example storage_benchmark --release --locked -- 10,100,1000
Chaque cas crée deux appareils temporaires, les associe, écrit le nombre demandé d'enregistrements ordinaires de 960 octets, effectue une recherche, exporte un coffre complet et rouvre la base de données chiffrée. Les répertoires temporaires sont supprimés à la sortie. La sortie est au format JSONL ; aucun coffre réel ni compte cloud n'est utilisé. Les cas par défaut comportent 100 et 1000 ressources.
Observations locales sous Windows x86_64 / Rust 1.98.1 MSVC le 2026-09-17 :
| Ressources | Enregistrement p50 / p95 (ms) | Recherche (ms) | Déverrouillage (ms) | Octets de la base de données | Octets de la réponse de synchronisation complète | Total cumulé des octets d'état sérialisé écrits |
|---|---|---|---|---|---|---|
| 10 | 5.96 / 7.20 | 10.29 | 146.45 | 147456 | 57255 | 297346 |
| 100 | 8.56 / 13.06 | 42.39 | 206.50 | 1126400 | 509912 | 21224694 |
| 1000 | 56.75 / 108.40 | 252.95 | 825.76 | 9175040 | 4162849 | 2038518604 |
Le chemin d'ajout au journal d'audit dérivait auparavant la même clé publique d'appareil une fois pour chaque entrée d'audit existante. La calculer une seule fois par ajout préserve la chaîne signée tout en supprimant le travail cryptographique répété. Avant cette modification, les mêmes recherches sur 100/1000 enregistrements prenaient 552.71/2476.66 ms. Il s'agit d'exécutions locales uniques, et non de mesures statistiquement contrôlées ni de garanties multiplateformes ; d'autres travaux de validation et de compilation étaient exécutés sur l'hôte.
serialized_state_bytes_written additionne la longueur de la ligne d'état chiffré
après chaque insertion de ressource. Il exclut les points de contrôle, les journaux,
l'amplification du système de fichiers et les écritures ultérieures de recherche ou
d'exportation ; ce n'est pas un compteur d'écritures physiques sur disque. La taille
de l'export inclut sa réponse JSON. La recherche renvoie au maximum 100 résultats.
La mémoire maximale, les grandes ressources binaires, la diffusion vers plusieurs
appareils et la latence mobile nécessitent encore un profilage.
Les transferts cloud terminés, en envoi comme en téléchargement, libèrent désormais leurs tampons chiffrés tout en conservant de petits reçus de rejeu et des marqueurs de publication. La capacité de la file s'applique aux travaux en attente. L'historique distant et les reçus locaux compacts de hachage sont conservés ; la réussite d'un envoi n'implique aucune suppression dans le cloud ni aucun accusé de réception d'un appareil hors ligne.
Le volume cumulé des écritures confirme que la persistance de l'état complet reste une conception adaptée aux petites bibliothèques. Des lignes chiffrées par révision et un transport incrémental constituent une modification distincte du format et de la migration, nécessitant une validation de la sauvegarde et du retour arrière avant de remplacer le format transactionnel existant. Utilisez d'abord ces mesures reproductibles pour définir une taille prise en charge et un budget de latence de publication.