Skip to content

Commit 84f1c23

Browse files
committed
Create benchmark.md
1 parent 3cb9f9b commit 84f1c23

1 file changed

Lines changed: 133 additions & 0 deletions

File tree

docs/benchmark.md

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
E:\GitHub\fula-api>cargo run --example benchmark --release
2+
Compiling fula-client v0.1.0 (E:\GitHub\fula-api\crates\fula-client)
3+
Compiling fula-api v0.1.0 (E:\GitHub\fula-api)
4+
Finished `release` profile [optimized] target(s) in 1m 05s
5+
Running `target\release\examples\benchmark.exe`
6+
════════════════════════════════════════════════════════════════════════════════
7+
FULA ENCRYPTED STORAGE BENCHMARK
8+
════════════════════════════════════════════════════════════════════════════════
9+
10+
Configuration:
11+
├─ Gateway: http://localhost:9000
12+
├─ Small folders: 20 × 100 files
13+
├─ Large file: 100 MB
14+
├─ Deep structure: 10 levels × 10 files
15+
└─ Remote pinning: enabled
16+
17+
To customize, set environment variables:
18+
BENCHMARK_SMALL_FOLDERS, BENCHMARK_FILES_PER_FOLDER,
19+
BENCHMARK_LARGE_FILE_MB, BENCHMARK_DEEP_LEVELS
20+
21+
22+
🔧 SETUP: Creating User A's encrypted client...
23+
├─ Remote pinning enabled: https://api.cloud.fx.land
24+
└─ Bucket created: benchmark-user-a
25+
26+
📁 SCENARIO 1A: Uploading 20 folders × 100 files each...
27+
Folder 1/20: ✓ (100 files)
28+
Folder 2/20: ✓ (100 files)
29+
Folder 3/20: ✓ (100 files)
30+
Folder 4/20: ✓ (100 files)
31+
Folder 5/20: ✓ (100 files)
32+
Folder 6/20: ✓ (100 files)
33+
Folder 7/20: ✓ (100 files)
34+
Folder 8/20: ✓ (100 files)
35+
Folder 9/20: ✓ (100 files)
36+
Folder 10/20: ✓ (100 files)
37+
Folder 11/20: ✓ (100 files)
38+
Folder 12/20: ✓ (100 files)
39+
Folder 13/20: ✓ (100 files)
40+
Folder 14/20: ✓ (100 files)
41+
Folder 15/20: ✓ (100 files)
42+
Folder 16/20: ✓ (100 files)
43+
Folder 17/20: ✓ (100 files)
44+
Folder 18/20: ✓ (100 files)
45+
Folder 19/20: ✓ (100 files)
46+
Folder 20/20: ✓ (100 files)
47+
└─ Upload complete: 2000 files, 53.50 MB in 744.1056406s
48+
49+
📋 Listing all directories...
50+
└─ Listed 20 directories in 1.9586ms
51+
52+
📥 Downloading & decrypting sample files...
53+
....................
54+
└─ Downloaded 200 files in 14.8787811s
55+
56+
📦 SCENARIO 1B: Uploading large file (100 MB)...
57+
├─ Upload: 296.3246268s
58+
└─ Downloading & decrypting...
59+
└─ Download: 97.4642419s (100.00 MB verified)
60+
61+
🌲 SCENARIO 1C: Creating 10-level deep folder structure...
62+
├─ Created 10 files at depth 10 in 10.5218297s
63+
└─ Listed deep directory in 1.4459ms (10 entries)
64+
65+
🔗 SCENARIO 2: Sharing Benchmark
66+
User A shares the deep folder with User B...
67+
68+
👤 User B created (public key: Fv6Zp8DlLdTWJgb6BaBn...)
69+
70+
📝 Method 1: Direct ShareToken Creation
71+
├─ Token created: 183.4µs
72+
├─ Share ID: 151e55db392c7368d1123759cf0e122f
73+
└─ Path scope: /deep/level_0/level_1/level_2/level_3/level_4/level_5/level_6/level_7/level_8/level_9
74+
75+
📬 Method 2: Async Inbox Sharing
76+
├─ Envelope created: 378.4µs
77+
├─ Entry ID: b9967390e8326c4a5a4725660e22f7b6
78+
└─ Inbox path: /.fula/inbox/0b987176e51cdb7abb46bd664456024b/b9967390e8326c4a5a4725660e22f7b6.share
79+
80+
👤 User B accepts the share...
81+
├─ Share accepted: 163.2µs
82+
├─ Path scope: /deep/level_0/level_1/level_2/level_3/level_4/level_5/level_6/level_7/level_8/level_9
83+
└─ Can read: true, Can write: false
84+
85+
📬 User B checks inbox...
86+
├─ Pending shares: 1
87+
├─ From: Some("User A")
88+
├─ Label: Some("Deep Folder Share")
89+
└─ Message: Some("Here's access to my deep nested folder!")
90+
91+
📥 User B fetches shared folder content...
92+
├─ Fetch time: 1.3388ms
93+
└─ Files accessible: 10
94+
95+
════════════════════════════════════════════════════════════════════════════════
96+
BENCHMARK RESULTS SUMMARY
97+
════════════════════════════════════════════════════════════════════════════════
98+
99+
📁 SCENARIO 1A: Small Files (20 folders × 100 files each)
100+
├─ Files: 2000
101+
├─ Total Size: 53.50 MB
102+
├─ Encrypt + Upload: 744.1056406s
103+
├─ Download + Decrypt: 14.8787811s
104+
├─ List Directory: 1.9586ms
105+
└─ Upload Throughput: 0.07 MB/s
106+
107+
📦 SCENARIO 1B: Large File
108+
├─ Size: 100.00 MB
109+
├─ Encrypt + Upload: 296.3246268s
110+
├─ Download + Decrypt: 97.4642419s
111+
├─ Upload Throughput: 0.34 MB/s
112+
└─ Download Throughput: 1.03 MB/s
113+
114+
🌲 SCENARIO 1C: Deep Nested Structure (10 levels)
115+
├─ Files at Bottom: 10
116+
├─ Upload Time: 10.5218297s
117+
└─ List Directory: 1.4459ms
118+
119+
🔗 SCENARIO 2: Sharing Benchmark
120+
├─ Share Token Creation: 183.4µs
121+
├─ Inbox Enqueue Time: 378.4µs
122+
├─ Share Acceptance: 163.2µs
123+
├─ Shared Folder Fetch: 1.3388ms
124+
└─ Files Decrypted by Recipient: 10
125+
126+
📊 OVERALL SUMMARY
127+
├─ Total Files: 2011
128+
├─ Total Data: 153.50 MB
129+
└─ Total Benchmark Time: 1163.7834586s
130+
131+
⚡ PERFORMANCE METRICS
132+
├─ Files/second: 1.73
133+
└─ Throughput: 0.13 MB/s

0 commit comments

Comments
 (0)