存储与同步基线
在仓库根目录运行一次性合成基准测试:
cargo run -p memories-core --example storage_benchmark --release --locked -- 10,100,1000
每个测试场景会创建两个临时设备,将其配对,写入指定数量的 960 字节普通记录,执行搜索、导出完整保险库并重新打开加密数据库。退出时删除临时目录。输出格式为 JSONL;不会使用真实保险库或云账号。默认场景为 100 和 1000 个资产。
2026-09-17 在本地 Windows x86_64 / Rust 1.98.1 MSVC 上观察到的结果:
| 资产数 | 保存 p50 / p95(毫秒) | 搜索(毫秒) | 解锁(毫秒) | 数据库字节数 | 完整同步响应字节数 | 累计写入的序列化状态字节数 |
|---|---|---|---|---|---|---|
| 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 |
审计追加路径此前会为每条现有审计记录重复派生同一个设备公钥。改为每次追加只计算一次,在保留签名链的同时去除了重复的密码学计算。在此修改之前,同样的 100/1000 条记录搜索耗时为 552.71/2476.66 毫秒。这些是单次本地运行结果,并非经过统计控制的测量,也不构成跨平台保证;当时主机还在运行其他验证和构建工作。
serialized_state_bytes_written 汇总每次插入资产后加密状态行的长度。它不包含检查点、日志、文件系统写入放大和后续搜索/导出写入;它不是实际磁盘写入计数器。导出大小包含 JSON 响应。搜索最多返回 100 条结果。峰值内存、大型二进制资产、多设备分发和移动端延迟仍需分析。
已完成的云上传/下载现在会释放密文缓冲区,同时保留小型重放回执和发布标记。队列容量适用于待处理工作。远程历史和精简的本地哈希回执仍会保留;上传成功并不意味着云端删除或离线设备已确认。
累计写入量证实,完整状态持久化仍然是一种面向小型资料库的设计。加密的逐修订记录和增量传输属于独立的格式/迁移变更,在替换现有事务格式之前必须验证备份和回滚。应先使用这些可复现测量结果确定支持规模和发布延迟预算。