@fjell/registry 4.4.52 → 4.4.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/package.json +4 -4
  2. package/API.md +0 -62
  3. package/GETTING_STARTED.md +0 -69
  4. package/build.js +0 -38
  5. package/docs/README.md +0 -74
  6. package/docs/TIMING_NODE_OPTIMIZATION.md +0 -207
  7. package/docs/TIMING_README.md +0 -170
  8. package/docs/docs.config.ts +0 -114
  9. package/docs/index.html +0 -26
  10. package/docs/package-lock.json +0 -5129
  11. package/docs/package.json +0 -34
  12. package/docs/public/404.html +0 -53
  13. package/docs/public/GETTING_STARTED.md +0 -69
  14. package/docs/public/README.md +0 -623
  15. package/docs/public/TIMING_NODE_OPTIMIZATION.md +0 -207
  16. package/docs/public/api.md +0 -62
  17. package/docs/public/client-api-overview.md +0 -137
  18. package/docs/public/configuration.md +0 -759
  19. package/docs/public/error-handling/README.md +0 -356
  20. package/docs/public/error-handling/network-errors.md +0 -485
  21. package/docs/public/examples/coordinates-example.ts +0 -253
  22. package/docs/public/examples/multi-level-keys.ts +0 -374
  23. package/docs/public/examples/registry-hub-coordinates-example.ts +0 -370
  24. package/docs/public/examples/registry-hub-types.ts +0 -437
  25. package/docs/public/examples/simple-example.ts +0 -250
  26. package/docs/public/examples-README.md +0 -241
  27. package/docs/public/fjell-icon.svg +0 -1
  28. package/docs/public/icon.png +0 -0
  29. package/docs/public/icon2.png +0 -0
  30. package/docs/public/memory-overhead.svg +0 -120
  31. package/docs/public/memory.md +0 -430
  32. package/docs/public/operations/README.md +0 -121
  33. package/docs/public/operations/all.md +0 -325
  34. package/docs/public/operations/create.md +0 -415
  35. package/docs/public/operations/get.md +0 -389
  36. package/docs/public/package.json +0 -63
  37. package/docs/public/pano.png +0 -0
  38. package/docs/public/pano2.png +0 -0
  39. package/docs/public/timing-range.svg +0 -176
  40. package/docs/public/timing.md +0 -483
  41. package/docs/timing-range.svg +0 -174
  42. package/docs/vitest.config.ts +0 -14
  43. package/examples/README.md +0 -241
  44. package/examples/coordinates-example.ts +0 -253
  45. package/examples/multi-level-keys.ts +0 -382
  46. package/examples/registry-hub-coordinates-example.ts +0 -370
  47. package/examples/registry-hub-types.ts +0 -437
  48. package/examples/registry-statistics-example.ts +0 -264
  49. package/examples/simple-example.ts +0 -250
  50. package/tsconfig.docs.json +0 -28
  51. package/vitest.config.ts +0 -22
@@ -1,483 +0,0 @@
1
- # Performance Timing Report
2
-
3
- Generated: 2025-07-19T19:08:20.231Z
4
- Version: 4.4.5
5
- Node.js: v22.0.0
6
- Platform: darwin arm64
7
-
8
- ## Summary
9
-
10
- This document contains performance timing metrics for key operations in @fjell/registry.
11
- All measurements are taken over 200 iterations (unless otherwise noted) with warm-up runs.
12
- Timing results are reported in microseconds (µs) for precision.
13
-
14
- ## Basic Operations Performance
15
-
16
- | Operation | Description | Avg Time (µs) | Min Time (µs) | Max Time (µs) | Threshold (µs) | Status |
17
- |-----------|-------------|---------------|---------------|---------------|----------------|--------|
18
- | createRegistry | Time to create a new registry | 0.2 | 0.0 | 865.0 | 5000 | ✅ PASS |
19
- | createRegistryHub | Time to create a new registry hub | 0.1 | 0.0 | 395.9 | 5000 | ✅ PASS |
20
- | createInstance | Time to create a new instance | 1.0 | 0.2 | 3362.4 | 10000 | ✅ PASS |
21
- | registerInstance | Time to register an instance in registry | 6.0 | 0.7 | 14657.3 | 5000 | ✅ PASS |
22
- | lookupInstance | Time to lookup an existing instance from registry | 0.3 | 0.0 | 685.2 | 2000 | ✅ PASS |
23
- | completeWorkflow | Time for complete workflow: create hub, registry, instance, register, and lookup | 6.4 | 2.1 | 7064.8 | 25000 | ✅ PASS |
24
-
25
- ## Scaling Performance Tests
26
-
27
- | Operation | Tree Size | Avg Time (µs) | Min Time (µs) | Max Time (µs) | Threshold (µs) | Status |
28
- |-----------|-----------|---------------|---------------|---------------|----------------|--------|
29
- | registerInstance_10 | 10 | 2.9 | 0.8 | 8043.9 | 5000 | ✅ PASS |
30
- | lookupInstance_10 | 10 | 0.2 | 0.0 | 57.5 | 2000 | ✅ PASS |
31
- | registerInstance_20 | 20 | 4.0 | 0.8 | 5138.1 | 5000 | ✅ PASS |
32
- | lookupInstance_20 | 20 | 0.4 | 0.0 | 2896.7 | 2000 | ✅ PASS |
33
- | registerInstance_50 | 50 | 1.8 | 0.7 | 3538.8 | 5000 | ✅ PASS |
34
- | lookupInstance_50 | 50 | 0.2 | 0.0 | 17.3 | 2000 | ✅ PASS |
35
- | registerInstance_100 | 100 | 3.0 | 0.8 | 3714.0 | 5000 | ✅ PASS |
36
- | lookupInstance_100 | 100 | 0.3 | 0.0 | 2029.2 | 2000 | ✅ PASS |
37
- | registerInstance_200 | 200 | 1.6 | 0.8 | 2891.4 | 10000 | ✅ PASS |
38
- | lookupInstance_200 | 200 | 0.3 | 0.0 | 2867.3 | 5000 | ✅ PASS |
39
- | registerInstance_500 | 500 | 1.5 | 0.7 | 3092.2 | 10000 | ✅ PASS |
40
- | lookupInstance_500 | 500 | 0.3 | 0.0 | 3657.6 | 5000 | ✅ PASS |
41
- | registerInstance_1000 | 1000 | 1.6 | 0.7 | 4527.8 | 10000 | ✅ PASS |
42
- | lookupInstance_1000 | 1000 | 0.2 | 0.0 | 2594.0 | 5000 | ✅ PASS |
43
- | registerInstance_2000 | 2000 | 1.1 | 0.8 | 63.3 | 20000 | ✅ PASS |
44
- | lookupInstance_2000 | 2000 | 0.2 | 0.0 | 8.2 | 10000 | ✅ PASS |
45
- | registerInstance_5000 | 5000 | 1.7 | 1.1 | 291.6 | 20000 | ✅ PASS |
46
- | lookupInstance_5000 | 5000 | 1.8 | 0.0 | 7794.5 | 10000 | ✅ PASS |
47
- | registerInstance_10000 | 10000 | 4.7 | 1.1 | 4041.7 | 20000 | ✅ PASS |
48
- | lookupInstance_10000 | 10000 | 0.3 | 0.0 | 46.0 | 10000 | ✅ PASS |
49
- | registerInstance_20000 | 20000 | 1.2 | 0.9 | 5.8 | 50000 | ✅ PASS |
50
- | lookupInstance_20000 | 20000 | 0.3 | 0.1 | 4.8 | 25000 | ✅ PASS |
51
- | registerInstance_50000 | 50000 | 1.2 | 0.9 | 18.1 | 50000 | ✅ PASS |
52
- | lookupInstance_50000 | 50000 | 0.2 | 0.1 | 3.4 | 25000 | ✅ PASS |
53
- | registerInstance_100000 | 100000 | 1.3 | 0.9 | 31.5 | 50000 | ✅ PASS |
54
- | lookupInstance_100000 | 100000 | 0.2 | 0.1 | 5.2 | 25000 | ✅ PASS |
55
-
56
- ## Scaling Performance Visualization
57
-
58
- ### Performance Range Chart
59
- ![Performance Range Chart](./timing-range.svg)
60
-
61
- *This performance range chart shows the average performance (center line) with ±1 standard deviation bands for each tree size.
62
- The bands reveal performance consistency and variability across 100 test rounds. Tight bands indicate
63
- consistent performance, while wider bands show more variability.*
64
-
65
-
66
- ## Detailed Results
67
-
68
- ### Basic Operations
69
-
70
- #### createRegistry
71
-
72
- **Description:** Time to create a new registry
73
- **Iterations:** 20000
74
- **Average Time:** 0.2 µs
75
- **Min Time:** 0.0 µs
76
- **Max Time:** 865.0 µs
77
- **Threshold:** 5000 µs
78
- **Status:** ✅ PASS
79
-
80
- #### createRegistryHub
81
-
82
- **Description:** Time to create a new registry hub
83
- **Iterations:** 20000
84
- **Average Time:** 0.1 µs
85
- **Min Time:** 0.0 µs
86
- **Max Time:** 395.9 µs
87
- **Threshold:** 5000 µs
88
- **Status:** ✅ PASS
89
-
90
- #### createInstance
91
-
92
- **Description:** Time to create a new instance
93
- **Iterations:** 20000
94
- **Average Time:** 1.0 µs
95
- **Min Time:** 0.2 µs
96
- **Max Time:** 3362.4 µs
97
- **Threshold:** 10000 µs
98
- **Status:** ✅ PASS
99
-
100
- #### registerInstance
101
-
102
- **Description:** Time to register an instance in registry
103
- **Iterations:** 20000
104
- **Average Time:** 6.0 µs
105
- **Min Time:** 0.7 µs
106
- **Max Time:** 14657.3 µs
107
- **Threshold:** 5000 µs
108
- **Status:** ✅ PASS
109
-
110
- #### lookupInstance
111
-
112
- **Description:** Time to lookup an existing instance from registry
113
- **Iterations:** 20000
114
- **Average Time:** 0.3 µs
115
- **Min Time:** 0.0 µs
116
- **Max Time:** 685.2 µs
117
- **Threshold:** 2000 µs
118
- **Status:** ✅ PASS
119
-
120
- #### completeWorkflow
121
-
122
- **Description:** Time for complete workflow: create hub, registry, instance, register, and lookup
123
- **Iterations:** 10000
124
- **Average Time:** 6.4 µs
125
- **Min Time:** 2.1 µs
126
- **Max Time:** 7064.8 µs
127
- **Threshold:** 25000 µs
128
- **Status:** ✅ PASS
129
-
130
- ### Scaling Tests
131
-
132
- #### registerInstance_10 (Tree Size: 10)
133
-
134
- **Description:** Time to register instance with 10 existing items in tree
135
- **Tree Size:** 10 items
136
- **Iterations:** 10000
137
- **Average Time:** 2.9 µs
138
- **Min Time:** 0.8 µs
139
- **Max Time:** 8043.9 µs
140
- **Threshold:** 5000 µs
141
- **Status:** ✅ PASS
142
-
143
- #### lookupInstance_10 (Tree Size: 10)
144
-
145
- **Description:** Time to lookup instance with 10 items in tree
146
- **Tree Size:** 10 items
147
- **Iterations:** 20000
148
- **Average Time:** 0.2 µs
149
- **Min Time:** 0.0 µs
150
- **Max Time:** 57.5 µs
151
- **Threshold:** 2000 µs
152
- **Status:** ✅ PASS
153
-
154
- #### registerInstance_20 (Tree Size: 20)
155
-
156
- **Description:** Time to register instance with 20 existing items in tree
157
- **Tree Size:** 20 items
158
- **Iterations:** 10000
159
- **Average Time:** 4.0 µs
160
- **Min Time:** 0.8 µs
161
- **Max Time:** 5138.1 µs
162
- **Threshold:** 5000 µs
163
- **Status:** ✅ PASS
164
-
165
- #### lookupInstance_20 (Tree Size: 20)
166
-
167
- **Description:** Time to lookup instance with 20 items in tree
168
- **Tree Size:** 20 items
169
- **Iterations:** 20000
170
- **Average Time:** 0.4 µs
171
- **Min Time:** 0.0 µs
172
- **Max Time:** 2896.7 µs
173
- **Threshold:** 2000 µs
174
- **Status:** ✅ PASS
175
-
176
- #### registerInstance_50 (Tree Size: 50)
177
-
178
- **Description:** Time to register instance with 50 existing items in tree
179
- **Tree Size:** 50 items
180
- **Iterations:** 10000
181
- **Average Time:** 1.8 µs
182
- **Min Time:** 0.7 µs
183
- **Max Time:** 3538.8 µs
184
- **Threshold:** 5000 µs
185
- **Status:** ✅ PASS
186
-
187
- #### lookupInstance_50 (Tree Size: 50)
188
-
189
- **Description:** Time to lookup instance with 50 items in tree
190
- **Tree Size:** 50 items
191
- **Iterations:** 20000
192
- **Average Time:** 0.2 µs
193
- **Min Time:** 0.0 µs
194
- **Max Time:** 17.3 µs
195
- **Threshold:** 2000 µs
196
- **Status:** ✅ PASS
197
-
198
- #### registerInstance_100 (Tree Size: 100)
199
-
200
- **Description:** Time to register instance with 100 existing items in tree
201
- **Tree Size:** 100 items
202
- **Iterations:** 10000
203
- **Average Time:** 3.0 µs
204
- **Min Time:** 0.8 µs
205
- **Max Time:** 3714.0 µs
206
- **Threshold:** 5000 µs
207
- **Status:** ✅ PASS
208
-
209
- #### lookupInstance_100 (Tree Size: 100)
210
-
211
- **Description:** Time to lookup instance with 100 items in tree
212
- **Tree Size:** 100 items
213
- **Iterations:** 20000
214
- **Average Time:** 0.3 µs
215
- **Min Time:** 0.0 µs
216
- **Max Time:** 2029.2 µs
217
- **Threshold:** 2000 µs
218
- **Status:** ✅ PASS
219
-
220
- #### registerInstance_200 (Tree Size: 200)
221
-
222
- **Description:** Time to register instance with 200 existing items in tree
223
- **Tree Size:** 200 items
224
- **Iterations:** 10000
225
- **Average Time:** 1.6 µs
226
- **Min Time:** 0.8 µs
227
- **Max Time:** 2891.4 µs
228
- **Threshold:** 10000 µs
229
- **Status:** ✅ PASS
230
-
231
- #### lookupInstance_200 (Tree Size: 200)
232
-
233
- **Description:** Time to lookup instance with 200 items in tree
234
- **Tree Size:** 200 items
235
- **Iterations:** 20000
236
- **Average Time:** 0.3 µs
237
- **Min Time:** 0.0 µs
238
- **Max Time:** 2867.3 µs
239
- **Threshold:** 5000 µs
240
- **Status:** ✅ PASS
241
-
242
- #### registerInstance_500 (Tree Size: 500)
243
-
244
- **Description:** Time to register instance with 500 existing items in tree
245
- **Tree Size:** 500 items
246
- **Iterations:** 10000
247
- **Average Time:** 1.5 µs
248
- **Min Time:** 0.7 µs
249
- **Max Time:** 3092.2 µs
250
- **Threshold:** 10000 µs
251
- **Status:** ✅ PASS
252
-
253
- #### lookupInstance_500 (Tree Size: 500)
254
-
255
- **Description:** Time to lookup instance with 500 items in tree
256
- **Tree Size:** 500 items
257
- **Iterations:** 20000
258
- **Average Time:** 0.3 µs
259
- **Min Time:** 0.0 µs
260
- **Max Time:** 3657.6 µs
261
- **Threshold:** 5000 µs
262
- **Status:** ✅ PASS
263
-
264
- #### registerInstance_1000 (Tree Size: 1000)
265
-
266
- **Description:** Time to register instance with 1000 existing items in tree
267
- **Tree Size:** 1000 items
268
- **Iterations:** 10000
269
- **Average Time:** 1.6 µs
270
- **Min Time:** 0.7 µs
271
- **Max Time:** 4527.8 µs
272
- **Threshold:** 10000 µs
273
- **Status:** ✅ PASS
274
-
275
- #### lookupInstance_1000 (Tree Size: 1000)
276
-
277
- **Description:** Time to lookup instance with 1000 items in tree
278
- **Tree Size:** 1000 items
279
- **Iterations:** 20000
280
- **Average Time:** 0.2 µs
281
- **Min Time:** 0.0 µs
282
- **Max Time:** 2594.0 µs
283
- **Threshold:** 5000 µs
284
- **Status:** ✅ PASS
285
-
286
- #### registerInstance_2000 (Tree Size: 2000)
287
-
288
- **Description:** Time to register instance with 2000 existing items in tree
289
- **Tree Size:** 2000 items
290
- **Iterations:** 2500
291
- **Average Time:** 1.1 µs
292
- **Min Time:** 0.8 µs
293
- **Max Time:** 63.3 µs
294
- **Threshold:** 20000 µs
295
- **Status:** ✅ PASS
296
-
297
- #### lookupInstance_2000 (Tree Size: 2000)
298
-
299
- **Description:** Time to lookup instance with 2000 items in tree
300
- **Tree Size:** 2000 items
301
- **Iterations:** 5000
302
- **Average Time:** 0.2 µs
303
- **Min Time:** 0.0 µs
304
- **Max Time:** 8.2 µs
305
- **Threshold:** 10000 µs
306
- **Status:** ✅ PASS
307
-
308
- #### registerInstance_5000 (Tree Size: 5000)
309
-
310
- **Description:** Time to register instance with 5000 existing items in tree
311
- **Tree Size:** 5000 items
312
- **Iterations:** 2500
313
- **Average Time:** 1.7 µs
314
- **Min Time:** 1.1 µs
315
- **Max Time:** 291.6 µs
316
- **Threshold:** 20000 µs
317
- **Status:** ✅ PASS
318
-
319
- #### lookupInstance_5000 (Tree Size: 5000)
320
-
321
- **Description:** Time to lookup instance with 5000 items in tree
322
- **Tree Size:** 5000 items
323
- **Iterations:** 5000
324
- **Average Time:** 1.8 µs
325
- **Min Time:** 0.0 µs
326
- **Max Time:** 7794.5 µs
327
- **Threshold:** 10000 µs
328
- **Status:** ✅ PASS
329
-
330
- #### registerInstance_10000 (Tree Size: 10000)
331
-
332
- **Description:** Time to register instance with 10000 existing items in tree
333
- **Tree Size:** 10000 items
334
- **Iterations:** 2500
335
- **Average Time:** 4.7 µs
336
- **Min Time:** 1.1 µs
337
- **Max Time:** 4041.7 µs
338
- **Threshold:** 20000 µs
339
- **Status:** ✅ PASS
340
-
341
- #### lookupInstance_10000 (Tree Size: 10000)
342
-
343
- **Description:** Time to lookup instance with 10000 items in tree
344
- **Tree Size:** 10000 items
345
- **Iterations:** 5000
346
- **Average Time:** 0.3 µs
347
- **Min Time:** 0.0 µs
348
- **Max Time:** 46.0 µs
349
- **Threshold:** 10000 µs
350
- **Status:** ✅ PASS
351
-
352
- #### registerInstance_20000 (Tree Size: 20000)
353
-
354
- **Description:** Time to register instance with 20000 existing items in tree
355
- **Tree Size:** 20000 items
356
- **Iterations:** 500
357
- **Average Time:** 1.2 µs
358
- **Min Time:** 0.9 µs
359
- **Max Time:** 5.8 µs
360
- **Threshold:** 50000 µs
361
- **Status:** ✅ PASS
362
-
363
- #### lookupInstance_20000 (Tree Size: 20000)
364
-
365
- **Description:** Time to lookup instance with 20000 items in tree
366
- **Tree Size:** 20000 items
367
- **Iterations:** 1250
368
- **Average Time:** 0.3 µs
369
- **Min Time:** 0.1 µs
370
- **Max Time:** 4.8 µs
371
- **Threshold:** 25000 µs
372
- **Status:** ✅ PASS
373
-
374
- #### registerInstance_50000 (Tree Size: 50000)
375
-
376
- **Description:** Time to register instance with 50000 existing items in tree
377
- **Tree Size:** 50000 items
378
- **Iterations:** 500
379
- **Average Time:** 1.2 µs
380
- **Min Time:** 0.9 µs
381
- **Max Time:** 18.1 µs
382
- **Threshold:** 50000 µs
383
- **Status:** ✅ PASS
384
-
385
- #### lookupInstance_50000 (Tree Size: 50000)
386
-
387
- **Description:** Time to lookup instance with 50000 items in tree
388
- **Tree Size:** 50000 items
389
- **Iterations:** 1250
390
- **Average Time:** 0.2 µs
391
- **Min Time:** 0.1 µs
392
- **Max Time:** 3.4 µs
393
- **Threshold:** 25000 µs
394
- **Status:** ✅ PASS
395
-
396
- #### registerInstance_100000 (Tree Size: 100000)
397
-
398
- **Description:** Time to register instance with 100000 existing items in tree
399
- **Tree Size:** 100000 items
400
- **Iterations:** 500
401
- **Average Time:** 1.3 µs
402
- **Min Time:** 0.9 µs
403
- **Max Time:** 31.5 µs
404
- **Threshold:** 50000 µs
405
- **Status:** ✅ PASS
406
-
407
- #### lookupInstance_100000 (Tree Size: 100000)
408
-
409
- **Description:** Time to lookup instance with 100000 items in tree
410
- **Tree Size:** 100000 items
411
- **Iterations:** 1250
412
- **Average Time:** 0.2 µs
413
- **Min Time:** 0.1 µs
414
- **Max Time:** 5.2 µs
415
- **Threshold:** 25000 µs
416
- **Status:** ✅ PASS
417
-
418
- ## Performance Analysis
419
-
420
- ### Key Metrics
421
-
422
- - **Registry Creation**: Fast lightweight object creation
423
- - **RegistryHub Creation**: Minimal overhead for hub management
424
- - **Instance Creation**: Efficient coordinate-based instance creation
425
- - **Instance Lookup**: Optimized tree traversal for instance retrieval
426
- - **Registration**: Quick instance registration with scope support
427
-
428
- ### Scaling Analysis
429
-
430
- The scaling tests measure performance across a wide range of tree sizes to identify potential O(n) issues:
431
-
432
- - **Small Scale (10-100)**: Baseline performance for small registries
433
- - **Medium Scale (200-1000)**: Standard application-scale registry performance
434
- - **Large Scale (2000-10000)**: Enterprise-scale registry performance
435
- - **Very Large Scale (20000-100000)**: Extreme-scale registry stress testing
436
-
437
- Tree sizes tested: 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000
438
-
439
- These comprehensive tests help ensure that the registry maintains good performance characteristics across all
440
- deployment scenarios, from small applications to large-scale enterprise systems.
441
-
442
- ### Timing Constraints
443
-
444
- The following timing constraints are enforced to ensure optimal performance:
445
-
446
- #### Basic Operations
447
- - **createRegistry**: ≤ 5000µs (5.0ms)
448
- - **createRegistryHub**: ≤ 5000µs (5.0ms)
449
- - **createInstance**: ≤ 10000µs (10.0ms)
450
- - **lookupInstance**: ≤ 2000µs (2.0ms)
451
- - **registerInstance**: ≤ 5000µs (5.0ms)
452
-
453
- #### Scaling Operations
454
- - **registerInstance** (≤100 items): ≤ 5000µs (5ms)
455
- - **registerInstance** (100-1000 items): ≤ 10000µs (10ms)
456
- - **registerInstance** (1000-10000 items): ≤ 20000µs (20ms)
457
- - **registerInstance** (>10000 items): ≤ 50000µs (50ms)
458
- - **lookupInstance** (≤100 items): ≤ 2000µs (2ms)
459
- - **lookupInstance** (100-1000 items): ≤ 5000µs (5ms)
460
- - **lookupInstance** (1000-10000 items): ≤ 10000µs (10ms)
461
- - **lookupInstance** (>10000 items): ≤ 25000µs (25ms)
462
-
463
- ### Notes
464
-
465
- - All timing tests include warm-up iterations to account for JIT compilation
466
- - Tests are run in isolation to minimize interference
467
- - Results may vary based on system specifications and current load
468
- - Timing results are reported in microseconds (µs) for precision
469
- - Timing constraints are set to ensure the library performs well in production environments
470
- - Scaling tests help identify performance degradation as registry size increases
471
-
472
- ### Recommendations
473
-
474
- If any timing tests fail:
475
-
476
- 1. **Review Recent Changes**: Check if recent code changes have introduced performance regressions
477
- 2. **System Resources**: Ensure adequate system resources are available during testing
478
- 3. **Optimization**: Consider optimizing the failing operations if thresholds are consistently exceeded
479
- 4. **Threshold Review**: Review if timing constraints are still appropriate for current use cases
480
-
481
- ---
482
-
483
- *This document is automatically generated during testing and should be updated with each release.*
@@ -1,174 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <svg width="1200" height="800" xmlns="http://www.w3.org/2000/svg">
3
- <style>
4
- .axis { stroke: #333; stroke-width: 1; }
5
- .grid { stroke: #ddd; stroke-width: 0.5; }
6
- .label { font-family: Arial, sans-serif; font-size: 14px; fill: #333; }
7
- .title { font-family: Arial, sans-serif; font-size: 16px; font-weight: bold; fill: #333; }
8
- .subtitle { font-family: Arial, sans-serif; font-size: 12px; fill: #666; }
9
- .register-mean { stroke: #e74c3c; stroke-width: 3; fill: none; }
10
- .lookup-mean { stroke: #3498db; stroke-width: 3; fill: none; }
11
- .register-band { fill: rgba(231, 76, 60, 0.2); stroke: #e74c3c; stroke-width: 1; }
12
- .lookup-band { fill: rgba(52, 152, 219, 0.2); stroke: #3498db; stroke-width: 1; }
13
- .register-dot { fill: #e74c3c; }
14
- .lookup-dot { fill: #3498db; }
15
- .legend { font-family: Arial, sans-serif; font-size: 12px; fill: #333; }
16
- .axis-title { font-family: Arial, sans-serif; font-size: 16px; font-weight: bold; fill: #333; }
17
- .metadata-title { font-family: Arial, sans-serif; font-size: 14px; font-weight: bold; fill: #333; }
18
- .metadata-section { font-family: Arial, sans-serif; font-size: 14px; font-weight: bold; fill: #444; }
19
- .metadata-label { font-family: Arial, sans-serif; font-size: 10px; fill: #666; }
20
- .metadata-value { font-family: Arial, sans-serif; font-size: 10px; fill: #333; }
21
- </style>
22
-
23
- <!-- Background -->
24
- <rect width="1200" height="800" fill="white"/>
25
-
26
- <!-- Title -->
27
- <text x="600" y="25" text-anchor="middle" class="title">Timing of Common Registry Operations</text>
28
- <text x="600" y="45" text-anchor="middle" class="subtitle">Performance measurements across varying tree sizes</text>
29
-
30
- <!-- Plot area -->
31
- <g transform="translate(110,60)">
32
-
33
- <!-- Grid lines (logarithmic scale) -->
34
- <line x1="0" y1="443.10897627676053" x2="1015" y2="443.10897627676053" class="grid"/>
35
- <text x="-10" y="447.10897627676053" text-anchor="end" class="label">0.10µs</text>
36
- <line x1="0" y1="364.5972351236878" x2="1015" y2="364.5972351236878" class="grid"/>
37
- <text x="-10" y="368.5972351236878" text-anchor="end" class="label">0.20µs</text>
38
- <line x1="0" y1="260.8103587149167" x2="1015" y2="260.8103587149167" class="grid"/>
39
- <text x="-10" y="264.8103587149167" text-anchor="end" class="label">0.50µs</text>
40
- <line x1="0" y1="182.2986175618439" x2="1015" y2="182.2986175618439" class="grid"/>
41
- <text x="-10" y="186.2986175618439" text-anchor="end" class="label">1.0µs</text>
42
- <line x1="0" y1="103.78687640877115" x2="1015" y2="103.78687640877115" class="grid"/>
43
- <text x="-10" y="107.78687640877115" text-anchor="end" class="label">2.0µs</text>
44
- <line x1="0" y1="0" x2="1015" y2="0" class="grid"/>
45
- <text x="-10" y="4" text-anchor="end" class="label">5.0µs</text>
46
- <line x1="0" y1="0" x2="0" y2="460" class="grid"/>
47
- <text x="0" y="480" text-anchor="middle" class="label">10</text>
48
- <line x1="76.38636139973525" y1="0" x2="76.38636139973525" y2="460" class="grid"/>
49
- <text x="76.38636139973525" y="480" text-anchor="middle" class="label">20</text>
50
- <line x1="177.36363860026475" y1="0" x2="177.36363860026475" y2="460" class="grid"/>
51
- <text x="177.36363860026475" y="480" text-anchor="middle" class="label">50</text>
52
- <line x1="253.75" y1="0" x2="253.75" y2="460" class="grid"/>
53
- <text x="253.75" y="480" text-anchor="middle" class="label">100</text>
54
- <line x1="330.1363613997352" y1="0" x2="330.1363613997352" y2="460" class="grid"/>
55
- <text x="330.1363613997352" y="480" text-anchor="middle" class="label">200</text>
56
- <line x1="431.1136386002648" y1="0" x2="431.1136386002648" y2="460" class="grid"/>
57
- <text x="431.1136386002648" y="480" text-anchor="middle" class="label">500</text>
58
- <line x1="507.5" y1="0" x2="507.5" y2="460" class="grid"/>
59
- <text x="507.5" y="480" text-anchor="middle" class="label">1k</text>
60
- <line x1="583.8863613997353" y1="0" x2="583.8863613997353" y2="460" class="grid"/>
61
- <text x="583.8863613997353" y="480" text-anchor="middle" class="label">2k</text>
62
- <line x1="684.8636386002647" y1="0" x2="684.8636386002647" y2="460" class="grid"/>
63
- <text x="684.8636386002647" y="480" text-anchor="middle" class="label">5k</text>
64
- <line x1="761.25" y1="0" x2="761.25" y2="460" class="grid"/>
65
- <text x="761.25" y="480" text-anchor="middle" class="label">10k</text>
66
- <line x1="837.6363613997353" y1="0" x2="837.6363613997353" y2="460" class="grid"/>
67
- <text x="837.6363613997353" y="480" text-anchor="middle" class="label">20k</text>
68
- <line x1="938.6136386002647" y1="0" x2="938.6136386002647" y2="460" class="grid"/>
69
- <text x="938.6136386002647" y="480" text-anchor="middle" class="label">50k</text>
70
- <line x1="1015" y1="0" x2="1015" y2="460" class="grid"/>
71
- <text x="1015" y="480" text-anchor="middle" class="label">100k</text>
72
- <!-- Y-axis -->
73
- <line x1="0" y1="0" x2="0" y2="460" class="axis"/>
74
-
75
- <!-- X-axis -->
76
- <line x1="0" y1="460" x2="1015" y2="460" class="axis"/>
77
-
78
- <!-- Axis labels -->
79
- <text x="507.5" y="510" text-anchor="middle" class="axis-title">Tree Size (items) - Log Scale</text>
80
- <text transform="rotate(-90,-70,230)" x="-70" y="230" text-anchor="middle" class="axis-title">Execution Time (µs)</text>
81
- <path d="M 0 175.37463139035953 L 76.38636139973525 171.7562601144943 L 177.36363860026475 177.09198908626382 L 253.75 185.53577825747828 L 330.1363613997352 181.45530917533853 L 431.1136386002648 193.30788044935775 L 507.5 183.85009950272268 L 583.8863613997353 192.5502021682463 L 684.8636386002647 182.2419974656646 L 761.25 192.11308462438052 L 837.6363613997353 158.53592854903906 L 938.6136386002647 189.80227573711466 L 1015 178.48303277884725" class="register-mean"/>
82
- <path d="M 0 379.7137216999663 L 76.38636139973525 353.0132662444159 L 177.36363860026475 372.1511303452223 L 253.75 376.5702840755931 L 330.1363613997352 381.48825884692724 L 431.1136386002648 372.8653274994695 L 507.5 356.0276858613769 L 583.8863613997353 327.3781957596831 L 684.8636386002647 304.30603248991525 L 761.25 316.1453481631414 L 837.6363613997353 300.79175199582454 L 938.6136386002647 309.38444349636274 L 1015 299.69820512998433" class="lookup-mean"/>
83
- <circle cx="0" cy="175.37463139035953" r="4" class="register-dot"/>
84
- <circle cx="76.38636139973525" cy="171.7562601144943" r="4" class="register-dot"/>
85
- <circle cx="177.36363860026475" cy="177.09198908626382" r="4" class="register-dot"/>
86
- <circle cx="253.75" cy="185.53577825747828" r="4" class="register-dot"/>
87
- <circle cx="330.1363613997352" cy="181.45530917533853" r="4" class="register-dot"/>
88
- <circle cx="431.1136386002648" cy="193.30788044935775" r="4" class="register-dot"/>
89
- <circle cx="507.5" cy="183.85009950272268" r="4" class="register-dot"/>
90
- <circle cx="583.8863613997353" cy="192.5502021682463" r="4" class="register-dot"/>
91
- <circle cx="684.8636386002647" cy="182.2419974656646" r="4" class="register-dot"/>
92
- <circle cx="761.25" cy="192.11308462438052" r="4" class="register-dot"/>
93
- <circle cx="837.6363613997353" cy="158.53592854903906" r="4" class="register-dot"/>
94
- <circle cx="938.6136386002647" cy="189.80227573711466" r="4" class="register-dot"/>
95
- <circle cx="1015" cy="178.48303277884725" r="4" class="register-dot"/>
96
- <circle cx="0" cy="379.7137216999663" r="4" class="lookup-dot"/>
97
- <circle cx="76.38636139973525" cy="353.0132662444159" r="4" class="lookup-dot"/>
98
- <circle cx="177.36363860026475" cy="372.1511303452223" r="4" class="lookup-dot"/>
99
- <circle cx="253.75" cy="376.5702840755931" r="4" class="lookup-dot"/>
100
- <circle cx="330.1363613997352" cy="381.48825884692724" r="4" class="lookup-dot"/>
101
- <circle cx="431.1136386002648" cy="372.8653274994695" r="4" class="lookup-dot"/>
102
- <circle cx="507.5" cy="356.0276858613769" r="4" class="lookup-dot"/>
103
- <circle cx="583.8863613997353" cy="327.3781957596831" r="4" class="lookup-dot"/>
104
- <circle cx="684.8636386002647" cy="304.30603248991525" r="4" class="lookup-dot"/>
105
- <circle cx="761.25" cy="316.1453481631414" r="4" class="lookup-dot"/>
106
- <circle cx="837.6363613997353" cy="300.79175199582454" r="4" class="lookup-dot"/>
107
- <circle cx="938.6136386002647" cy="309.38444349636274" r="4" class="lookup-dot"/>
108
- <circle cx="1015" cy="299.69820512998433" r="4" class="lookup-dot"/>
109
- <!-- Legend -->
110
- <g transform="translate(20, 20)">
111
- <rect x="0" y="0" width="190" height="80" fill="white" stroke="#ccc" stroke-width="1"/>
112
-
113
- <!-- Register Instance Legend -->
114
- <text x="10" y="20" class="legend" font-weight="bold">Register Instance</text>
115
- <line x1="10" y1="30" x2="40" y2="30" class="register-mean"/>
116
- <circle cx="25" cy="30" r="3" class="register-dot"/>
117
- <text x="45" y="34" class="legend">Average Timing</text>
118
-
119
- <!-- Lookup Instance Legend -->
120
- <text x="10" y="55" class="legend" font-weight="bold">Lookup Instance</text>
121
- <line x1="10" y1="65" x2="40" y2="65" class="lookup-mean"/>
122
- <circle cx="25" cy="65" r="3" class="lookup-dot"/>
123
- <text x="45" y="69" class="legend">Average Timing</text>
124
- </g>
125
-
126
- </g>
127
-
128
- <!-- Test Metadata Section -->
129
- <g transform="translate(50, 620)">
130
- <!-- Left Column: System Information -->
131
- <g transform="translate(20, 20)">
132
- <text x="0" y="0" class="metadata-section">System Information</text>
133
-
134
- <text x="0" y="25" class="metadata-label">Test Date:</text>
135
- <text x="150" y="25" class="metadata-value">2025-10-19</text>
136
-
137
- <text x="0" y="45" class="metadata-label">Package Version:</text>
138
- <text x="150" y="45" class="metadata-value">@fjell/registry v4.4.5</text>
139
-
140
- <text x="0" y="65" class="metadata-label">Node.js Version:</text>
141
- <text x="150" y="65" class="metadata-value">v24.8.0 (darwin arm64)</text>
142
-
143
- <text x="0" y="85" class="metadata-label">Platform:</text>
144
- <text x="150" y="85" class="metadata-value">darwin arm64</text>
145
-
146
- <text x="0" y="105" class="metadata-label">Compiler:</text>
147
- <text x="150" y="105" class="metadata-value">TypeScript + Vite</text>
148
- </g>
149
-
150
- <!-- Center Column: Test Configuration -->
151
- <g transform="translate(330, 20)">
152
- <text x="0" y="0" class="metadata-section">Test Configuration</text>
153
-
154
- <text x="0" y="25" class="metadata-label">Test Rounds:</text>
155
- <text x="120" y="25" class="metadata-value">100 per tree size</text>
156
-
157
- <text x="0" y="45" class="metadata-label">Iterations per Round:</text>
158
- <text x="120" y="45" class="metadata-value">200 operations</text>
159
-
160
- <text x="0" y="65" class="metadata-label">Total Measurements:</text>
161
- <text x="120" y="65" class="metadata-value">20,000 per data point</text>
162
- </g>
163
-
164
- <!-- Right Column: Test Notes -->
165
- <g transform="translate(600, 20)">
166
- <text x="0" y="0" class="metadata-section">Test Notes</text>
167
- <text x="0" y="25" class="metadata-label">• Performance measurements use Node.js performance.now() with microsecond precision</text>
168
- <text x="0" y="42" class="metadata-label">• Each test includes warm-up iterations to minimize JIT compilation effects</text>
169
- <text x="0" y="59" class="metadata-label">• Logging is mocked during timing tests to eliminate I/O overhead</text>
170
- <text x="0" y="76" class="metadata-label">• Tests verify both mean performance and consistency (low standard deviation)</text>
171
- <text x="0" y="93" class="metadata-label">• Statistical analysis ensures reliable performance measurements across all tree sizes</text>
172
- </g>
173
- </g>
174
- </svg>
@@ -1,14 +0,0 @@
1
- import { defineConfig } from 'vitest/config'
2
- import react from '@vitejs/plugin-react'
3
-
4
- export default defineConfig({
5
- plugins: [react()],
6
- test: {
7
- globals: true,
8
- environment: 'jsdom',
9
- setupFiles: ['./src/test/setup.ts'],
10
- coverage: {
11
- reporter: ['text', 'json', 'html']
12
- }
13
- }
14
- })