carlos / todomvc-bakeoff Public

Clone
git clone https://amadan.net/carlos/todomvc-bakeoff

Plain git — no account needed to clone.

Download

Download this file

1{
2 "Slug": "rust",
3 "Language": "Rust",
4 "Status": "LIVE",
5 "URL": "https://todo-rust-2.bfj.oncarlos.com",
6 "Version": "6a50716",
7 "Stack": "",
8 "Source": "https://amadan.net/carlos/todomvc-bakeoff?ref=main\u0026path=apps/rust",
9 "BehaviourJSOn": {
10 "Passed": 35,
11 "Failed": 0,
12 "Skipped": 0
13 },
14 "BehaviourJSOff": {
15 "Passed": 32,
16 "Failed": 0,
17 "Skipped": 3
18 },
19 "TTFBEmpty": {
20 "N": 30,
21 "P50": 93.22,
22 "P95": 100.757,
23 "P99": 102.341,
24 "Min": 85.547,
25 "Max": 102.341
26 },
27 "TTFB50": {
28 "N": 30,
29 "P50": 95.758,
30 "P95": 101.193,
31 "P99": 102.563,
32 "Min": 79.697,
33 "Max": 102.563
34 },
35 "Wake": [
36 1244.926,
37 1384.644,
38 1221.667
39 ],
40 "Load": [
41 {
42 "Scenario": "read",
43 "Concurrency": 1,
44 "RPS": 27.896439658306086,
45 "P50Ms": 35.808963999999996,
46 "P95Ms": 41.530607999999994,
47 "P99Ms": 45.00327,
48 "ErrorRate": 0,
49 "Status": {
50 "200": 278
51 }
52 },
53 {
54 "Scenario": "read",
55 "Concurrency": 2,
56 "RPS": 51.295747905661834,
57 "P50Ms": 38.975769,
58 "P95Ms": 43.033366,
59 "P99Ms": 49.329375,
60 "ErrorRate": 0,
61 "Status": {
62 "200": 511
63 }
64 },
65 {
66 "Scenario": "read",
67 "Concurrency": 4,
68 "RPS": 110.88463090226456,
69 "P50Ms": 35.619257000000005,
70 "P95Ms": 40.349394,
71 "P99Ms": 46.899803,
72 "ErrorRate": 0,
73 "Status": {
74 "200": 1105
75 }
76 },
77 {
78 "Scenario": "read",
79 "Concurrency": 8,
80 "RPS": 217.25988771972408,
81 "P50Ms": 36.251855,
82 "P95Ms": 42.355033,
83 "P99Ms": 50.262031,
84 "ErrorRate": 0,
85 "Status": {
86 "200": 2165
87 }
88 },
89 {
90 "Scenario": "read",
91 "Concurrency": 16,
92 "RPS": 370.24114557892005,
93 "P50Ms": 37.485039,
94 "P95Ms": 71.613409,
95 "P99Ms": 111.75089200000001,
96 "ErrorRate": 0,
97 "Status": {
98 "200": 3687
99 }
100 },
101 {
102 "Scenario": "read",
103 "Concurrency": 32,
104 "RPS": 755.8236863719462,
105 "P50Ms": 38.287504999999996,
106 "P95Ms": 64.49403600000001,
107 "P99Ms": 104.37146899999999,
108 "ErrorRate": 0,
109 "Status": {
110 "200": 7527
111 }
112 },
113 {
114 "Scenario": "read",
115 "Concurrency": 64,
116 "RPS": 904.4230202423414,
117 "P50Ms": 51.510092,
118 "P95Ms": 173.672529,
119 "P99Ms": 239.69119,
120 "ErrorRate": 0,
121 "Status": {
122 "200": 8982
123 }
124 },
125 {
126 "Scenario": "read",
127 "Concurrency": 128,
128 "RPS": 3089.4440282357054,
129 "P50Ms": 23.442237000000002,
130 "P95Ms": 85.606979,
131 "P99Ms": 135.174558,
132 "ErrorRate": 0.5589640269067039,
133 "Status": {
134 "200": 13572,
135 "503": 17201
136 }
137 },
138 {
139 "Scenario": "toggle",
140 "Concurrency": 1,
141 "RPS": 101.28069807648163,
142 "P50Ms": 9.484541,
143 "P95Ms": 13.258976,
144 "P99Ms": 16.052227,
145 "ErrorRate": 0,
146 "Status": {
147 "303": 1012
148 }
149 },
150 {
151 "Scenario": "toggle",
152 "Concurrency": 2,
153 "RPS": 181.88163801191737,
154 "P50Ms": 10.496462,
155 "P95Ms": 15.29558,
156 "P99Ms": 18.750016000000002,
157 "ErrorRate": 0,
158 "Status": {
159 "303": 1817
160 }
161 },
162 {
163 "Scenario": "toggle",
164 "Concurrency": 4,
165 "RPS": 323.2568406861726,
166 "P50Ms": 11.672455,
167 "P95Ms": 16.952855999999997,
168 "P99Ms": 21.727927,
169 "ErrorRate": 0,
170 "Status": {
171 "303": 3229
172 }
173 },
174 {
175 "Scenario": "toggle",
176 "Concurrency": 8,
177 "RPS": 236.5608461046787,
178 "P50Ms": 33.287513999999994,
179 "P95Ms": 37.432587000000005,
180 "P99Ms": 41.04903,
181 "ErrorRate": 0,
182 "Status": {
183 "303": 2358
184 }
185 },
186 {
187 "Scenario": "toggle",
188 "Concurrency": 16,
189 "RPS": 446.34219462408225,
190 "P50Ms": 34.806162,
191 "P95Ms": 40.841651999999996,
192 "P99Ms": 71.60932000000001,
193 "ErrorRate": 0,
194 "Status": {
195 "303": 4448
196 }
197 },
198 {
199 "Scenario": "toggle",
200 "Concurrency": 32,
201 "RPS": 873.9763299895703,
202 "P50Ms": 34.988298,
203 "P95Ms": 44.67085,
204 "P99Ms": 84.14837999999999,
205 "ErrorRate": 0,
206 "Status": {
207 "303": 8709
208 }
209 },
210 {
211 "Scenario": "toggle",
212 "Concurrency": 64,
213 "RPS": 1021.7259457156242,
214 "P50Ms": 47.003821,
215 "P95Ms": 136.623008,
216 "P99Ms": 169.532449,
217 "ErrorRate": 0,
218 "Status": {
219 "303": 10155
220 }
221 },
222 {
223 "Scenario": "toggle",
224 "Concurrency": 128,
225 "RPS": 1541.1129774768578,
226 "P50Ms": 53.413306,
227 "P95Ms": 237.209585,
228 "P99Ms": 341.468442,
229 "ErrorRate": 0.32568027210884354,
230 "Status": {
231 "303": 10309,
232 "503": 4979
233 }
234 },
235 {
236 "Scenario": "read-after",
237 "Concurrency": 1,
238 "RPS": 26.497040805183467,
239 "P50Ms": 37.38619,
240 "P95Ms": 43.146285,
241 "P99Ms": 67.921425,
242 "ErrorRate": 0,
243 "Status": {
244 "200": 264
245 }
246 },
247 {
248 "Scenario": "read-after",
249 "Concurrency": 2,
250 "RPS": 52.893435401021726,
251 "P50Ms": 37.638214000000005,
252 "P95Ms": 41.345954,
253 "P99Ms": 46.976573,
254 "ErrorRate": 0,
255 "Status": {
256 "200": 527
257 }
258 },
259 {
260 "Scenario": "read-after",
261 "Concurrency": 4,
262 "RPS": 104.78800956913224,
263 "P50Ms": 37.759797999999996,
264 "P95Ms": 43.010639000000005,
265 "P99Ms": 52.446515,
266 "ErrorRate": 0,
267 "Status": {
268 "200": 1044
269 }
270 },
271 {
272 "Scenario": "read-after",
273 "Concurrency": 8,
274 "RPS": 218.15609881206532,
275 "P50Ms": 35.933694,
276 "P95Ms": 43.158117000000004,
277 "P99Ms": 56.509759,
278 "ErrorRate": 0,
279 "Status": {
280 "200": 2174
281 }
282 },
283 {
284 "Scenario": "read-after",
285 "Concurrency": 16,
286 "RPS": 426.64814288081425,
287 "P50Ms": 36.386053000000004,
288 "P95Ms": 42.918265999999996,
289 "P99Ms": 59.735639,
290 "ErrorRate": 0,
291 "Status": {
292 "200": 4251
293 }
294 },
295 {
296 "Scenario": "read-after",
297 "Concurrency": 32,
298 "RPS": 807.918523355924,
299 "P50Ms": 37.090711999999996,
300 "P95Ms": 55.653822,
301 "P99Ms": 77.34257799999999,
302 "ErrorRate": 0,
303 "Status": {
304 "200": 8048
305 }
306 },
307 {
308 "Scenario": "read-after",
309 "Concurrency": 64,
310 "RPS": 915.4650480925231,
311 "P50Ms": 54.654946,
312 "P95Ms": 155.00248299999998,
313 "P99Ms": 229.42922299999998,
314 "ErrorRate": 0,
315 "Status": {
316 "200": 9093
317 }
318 },
319 {
320 "Scenario": "read-after",
321 "Concurrency": 128,
322 "RPS": 1384.7978847385973,
323 "P50Ms": 85.781212,
324 "P95Ms": 155.319064,
325 "P99Ms": 215.698699,
326 "ErrorRate": 0,
327 "Status": {
328 "200": 13723
329 }
330 },
331 {
332 "Scenario": "read-after",
333 "Concurrency": 256,
334 "RPS": 1398.2946720839582,
335 "P50Ms": 173.7648,
336 "P95Ms": 290.510786,
337 "P99Ms": 391.953787,
338 "ErrorRate": 0,
339 "Status": {
340 "200": 13733
341 }
342 },
343 {
344 "Scenario": "read-after",
345 "Concurrency": 512,
346 "RPS": 1398.1784484204934,
347 "P50Ms": 347.999482,
348 "P95Ms": 531.2550110000001,
349 "P99Ms": 1619.185671,
350 "ErrorRate": 0,
351 "Status": {
352 "200": 13479
353 }
354 }
355 ],
356 "Weight": {
357 "HTMLBytes": 36699,
358 "JSBytes": 4596
359 },
360 "Memory": {
361 "IdleKB": 14084,
362 "PeakKB": 53904,
363 "AfterKB": 49692
364 },
365 "Code": {
366 "Server": 702,
367 "Templates": 0,
368 "JS": 113,
369 "Tests": 203,
370 "Deps": 7
371 },
372 "Build": {
373 "ColdSeconds": 49.623494074,
374 "WarmSeconds": 8.477199217,
375 "EditSeconds": 5.752862848,
376 "Bytes": 3155304,
377 "Host": "DOCS-T1",
378 "ColdRuns": 1,
379 "Runs": 3
380 },
381 "TokensBuild": {
382 "Input": 94,
383 "Output": 46373,
384 "CacheRead": 3981174,
385 "CacheWrite": 102899,
386 "Turns": 48,
387 "Seconds": 1019.941,
388 "CostUSD": 2.5472628
389 },
390 "TokensFix": {
391 "Input": 14,
392 "Output": 6770,
393 "CacheRead": 839821,
394 "CacheWrite": 8710,
395 "Turns": 7,
396 "Seconds": 397.575,
397 "CostUSD": 0.3731002000000001
398 },
399 "TokensSecurity": {
400 "Input": 0,
401 "Output": 0,
402 "CacheRead": 0,
403 "CacheWrite": 0,
404 "Turns": 0,
405 "Seconds": 0,
406 "CostUSD": 0
407 },
408 "TokensReview": {
409 "Input": 619228,
410 "Output": 2898,
411 "CacheRead": 529920,
412 "CacheWrite": 0,
413 "Turns": 2,
414 "Seconds": 0,
415 "CostUSD": 0
416 },
417 "Readability": {
418 "Naming": 4,
419 "Structure": 4,
420 "Traceability": 4,
421 "Errors": 4,
422 "Comments": 5,
423 "Overall": 8,
424 "Notes": "Strongest: the `act` helper gives every action one pipeline (resolve visitor, transaction, 404/303/fragment), so a request is easy to follow from route to db to markup; comments explain real why (body-read before 403 behind the edge, mutex over a pool, append-only migrations, editing li preservation). db.rs is one query per function with scoped list ids. Weakest: handler params are single letters (s, h, q, f) and the `found`/`Outcome` indirection adds a hop; `swap` in app.js is dense DOM surgery that needs careful reading; errors are only rusqlite wrapped in AppError and logged with eprintln, with a few `expect`s standing in for proper failure paths."
425 },
426 "ReviewFindings": [
427 "[correctness] [apps/rust/static/app.js:10](/home/paulca/amadan.net/carlos/todomvc-bakeoff/.worktrees/rust/apps/rust/static/app.js:10): Filter navigation can discard pending changes. Requests wait in a promise queue, but filter links navigate immediately. With a toggle request pending, edit another todo and click a filter: blur queues the save, then navigation destroys the queue before that save reaches the server. Wait for pending actions before navigating.",
428 "[spec] [apps/rust/src/main.rs:45](/home/paulca/amadan.net/carlos/todomvc-bakeoff/.worktrees/rust/apps/rust/src/main.rs:45): `--listen` accepts every loopback address, including `::1` and `127.0.0.2`. The brief explicitly restricts binding to `127.0.0.1`. Validate that exact address."
429 ],
430 "Notes": null
431}
432