ストレージと同期のベースライン
リポジトリーのルートから、使い捨ての合成データによるベンチマークを実行します。
cargo run -p memories-core --example storage_benchmark --release --locked -- 10,100,1000
各ケースは一時的な端末を 2 台作成してペアリングし、指定された件数の 960 バイトの通常レコードを書き込み、検索し、保管庫全体をエクスポートし、暗号化データベースを再度開きます。一時ディレクトリーは終了時に削除されます。出力は JSONL で、実際の保管庫やクラウドアカウントは使用しません。既定のケースは 100 と 1000 アセットです。
2026-09-17 におけるローカルの Windows x86_64 / Rust 1.98.1 MSVC での観測値:
| アセット数 | 保存 p50 / p95(ms) | 検索(ms) | ロック解除(ms) | データベースのバイト数 | 完全同期レスポンスのバイト数 | 書き込まれたシリアライズ済み状態の累積バイト数 |
|---|---|---|---|---|---|---|
| 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 ms でした。これらはローカルでの単発の実行であり、統計的に統制された測定やプラットフォームをまたぐ保証ではありません。同じホストでほかの検証・ビルド処理も実行されていました。
serialized_state_bytes_written は、アセットの挿入ごとに暗号化された状態行の長さを合計します。チェックポイント、ジャーナル、ファイルシステムの書き込み増幅、後続の検索・エクスポートによる書き込みは含まず、物理ディスクへの書き込みカウンターではありません。エクスポートサイズには JSON レスポンスを含みます。検索は最大 100 件の結果を返します。ピークメモリー、大きなバイナリーアセット、複数端末への配信、モバイルの遅延には引き続きプロファイリングが必要です。
完了したクラウドのアップロード・ダウンロードは、現在、暗号文バッファーを破棄し、小さな再実行用受領記録と公開スタンプを保持します。キュー容量は保留中の処理に適用されます。リモートの履歴とコンパクトなローカルのハッシュ受領記録は保持され、アップロード成功からクラウドでの削除やオフライン端末の確認応答を推定しません。
累積書き込み量から、状態全体の永続化は引き続き小規模ライブラリー向けの設計であると確認できます。リビジョン単位の暗号化行と増分転送は別の形式・移行の変更であり、既存のトランザクション形式を置き換える前にバックアップとロールバックの検証が必要です。まず、この再現可能な測定を使って対応する規模とリリースの遅延予算を設定してください。