Fix jitless flag being ignored by resolved value binding resolvers#2000
Conversation
🦋 Changeset detectedLatest commit: 7175426 The changes in this PR will be included in the next version bump. This PR includes changesets to release 4 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
jitless flag being ignored by resolved value binding resolvers
|
@coderabbitai review |
✅ Action performedReview finished.
|
📝 WalkthroughWalkthroughResolved-value binding resolution now propagates ChangesResolved-value JITless resolution
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant ContainerBindingBuilder
participant ResolvedValueBindingNodeImplementation
participant ResolvedValueBindingNodeResolver
ContainerBindingBuilder->>ResolvedValueBindingNodeImplementation: construct with jitEnabled
ResolvedValueBindingNodeImplementation->>ResolvedValueBindingNodeResolver: build resolver with jitEnabled
ResolvedValueBindingNodeResolver-->>ResolvedValueBindingNodeImplementation: JIT or CSP-safe resolver
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
packages/container/libraries/core/src/planning/calculations/buildResolvedValueBindingNodeResolver.ts (1)
59-122: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd coverage for the
jitEnableddispatch boundary.The helper tests pass even if this boolean is reversed or no longer forwarded. Add a Vitest test through node construction or the public container path that proves
jitEnabled: falseresolvestoResolvedValuewithout invoking theFunctionconstructor, whiletrueretains the JIT path.As per coding guidelines, use Vitest with extensive unit and integration test coverage. <coding_guidelines>
Also applies to: 137-140
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/container/libraries/core/src/planning/calculations/buildResolvedValueBindingNodeResolver.ts` around lines 59 - 122, Add Vitest coverage for the public node/container resolution path around the resolver dispatch, verifying that jitEnabled: false resolves toResolvedValue without invoking the Function constructor and jitEnabled: true uses the JIT path. Ensure the test exercises node construction or the public container API rather than only helper functions, and covers both dispatch branches.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In
`@packages/container/libraries/core/src/planning/calculations/buildResolvedValueBindingNodeResolver.ts`:
- Around line 59-122: Add Vitest coverage for the public node/container
resolution path around the resolver dispatch, verifying that jitEnabled: false
resolves toResolvedValue without invoking the Function constructor and
jitEnabled: true uses the JIT path. Ensure the test exercises node construction
or the public container API rather than only helper functions, and covers both
dispatch branches.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: e87f2c23-ff6b-4ca3-a53f-86ae9c7ce375
📒 Files selected for processing (10)
.changeset/fix-resolved-value-jitless.mdpackages/container/libraries/core/src/planning/actions/curryBuildServiceNodeBindings.tspackages/container/libraries/core/src/planning/calculations/buildOneResolvedValueArgumentResolverOnCsp.spec.tspackages/container/libraries/core/src/planning/calculations/buildOneResolvedValueArgumentResolverOnCsp.tspackages/container/libraries/core/src/planning/calculations/buildResolvedValueArgumentsResolverOnCsp.spec.tspackages/container/libraries/core/src/planning/calculations/buildResolvedValueArgumentsResolverOnCsp.tspackages/container/libraries/core/src/planning/calculations/buildResolvedValueBindingNodeResolver.tspackages/container/libraries/core/src/planning/calculations/buildZeroResolvedValueArgumentsResolverOnCsp.spec.tspackages/container/libraries/core/src/planning/calculations/buildZeroResolvedValueArgumentsResolverOnCsp.tspackages/container/libraries/core/src/planning/models/ResolvedValueBindingNodeImplementation.ts
Benchmarks results:[CJS] Running benchmarks...
Get service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '246.53 ± 0.17%' │ '230.00 ± 9.00' │ '4238811 ± 0.01%' │ '4347826 ± 177061' │ 4056275 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '242.45 ± 0.16%' │ '230.00 ± 10.00' │ '4290847 ± 0.01%' │ '4347826 ± 197628' │ 4124611 │
│ 2 │ 'inversify6' │ '1143.6 ± 0.27%' │ '1052.0 ± 30.00' │ '916921 ± 0.02%' │ '950570 ± 27903' │ 874397 │
│ 3 │ 'inversify7' │ '310.65 ± 0.17%' │ '291.00 ± 10.00' │ '3347370 ± 0.01%' │ '3436426 ± 122293' │ 3219101 │
│ 4 │ 'inversify8' │ '248.07 ± 0.18%' │ '231.00 ± 9.00' │ '4216736 ± 0.01%' │ '4329004 ± 162338' │ 4031181 │
│ 5 │ 'awilix' │ '233.86 ± 0.28%' │ '211.00 ± 9.00' │ '4510065 ± 0.01%' │ '4739336 ± 193882' │ 4276067 │
│ 6 │ 'NestJS' │ '330.36 ± 0.38%' │ '301.00 ± 10.00' │ '3193484 ± 0.01%' │ '3322259 ± 106825' │ 3026962 │
│ 7 │ 'tsyringe' │ '322.49 ± 0.41%' │ '300.00 ± 10.00' │ '3274469 ± 0.01%' │ '3333333 ± 107527' │ 3100899 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 0.988x
inversifyCurrent vs inversify6 Speedup: 4.623x
inversifyCurrent vs inversify7 Speedup: 1.266x
inversifyCurrent vs inversify8 Speedup: 1.005x
inversifyCurrent vs awilix Speedup: 0.940x
inversifyCurrent vs NestJS Speedup: 1.327x
inversifyCurrent vs tsyringe Speedup: 1.295x
Get service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '309.95 ± 0.28%' │ '281.00 ± 10.00' │ '3391848 ± 0.01%' │ '3558719 ± 122293' │ 3226277 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '328.30 ± 0.27%' │ '310.00 ± 9.00' │ '3173874 ± 0.01%' │ '3225806 ± 96453' │ 3045987 │
│ 2 │ 'inversify6' │ '5637.5 ± 0.31%' │ '5240.0 ± 81.00' │ '184731 ± 0.05%' │ '190840 ± 2996' │ 177386 │
│ 3 │ 'inversify7' │ '591.89 ± 0.15%' │ '561.00 ± 10.00' │ '1745340 ± 0.01%' │ '1782531 ± 32351' │ 1689507 │
│ 4 │ 'inversify8' │ '300.06 ± 0.31%' │ '280.00 ± 10.00' │ '3517325 ± 0.01%' │ '3571429 ± 123153' │ 3332679 │
│ 5 │ 'awilix' │ '448.93 ± 0.38%' │ '421.00 ± 10.00' │ '2328190 ± 0.01%' │ '2375297 ± 57793' │ 2227515 │
│ 6 │ 'NestJS' │ '10992 ± 2.41%' │ '9097.0 ± 291.00' │ '103571 ± 0.11%' │ '109926 ± 3620' │ 91111 │
│ 7 │ 'tsyringe' │ '448.40 ± 0.12%' │ '421.00 ± 10.00' │ '2311776 ± 0.01%' │ '2375297 ± 57793' │ 2230169 │
└─────────┴──────────────────────────────┴──────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.069x
inversifyCurrent vs inversify6 Speedup: 18.361x
inversifyCurrent vs inversify7 Speedup: 1.943x
inversifyCurrent vs inversify8 Speedup: 0.964x
inversifyCurrent vs awilix Speedup: 1.457x
inversifyCurrent vs NestJS Speedup: 32.749x
inversifyCurrent vs tsyringe Speedup: 1.467x
Get wide service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '575.51 ± 0.36%' │ '541.00 ± 10.00' │ '1805702 ± 0.01%' │ '1848429 ± 33547' │ 1737591 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '978.59 ± 0.28%' │ '932.00 ± 10.00' │ '1055254 ± 0.01%' │ '1072961 ± 11637' │ 1021881 │
│ 2 │ 'inversify6' │ '25592 ± 0.36%' │ '23955 ± 220.00' │ '40342 ± 0.11%' │ '41745 ± 382' │ 39075 │
│ 3 │ 'inversify7' │ '1701.3 ± 0.28%' │ '1633.0 ± 11.00' │ '605982 ± 0.02%' │ '612370 ± 4097' │ 587780 │
│ 4 │ 'inversify8' │ '778.05 ± 0.33%' │ '741.00 ± 10.00' │ '1333210 ± 0.01%' │ '1349528 ± 18461' │ 1285265 │
│ 5 │ 'awilix' │ '1222.6 ± 0.15%' │ '1182.0 ± 20.00' │ '835061 ± 0.01%' │ '846024 ± 14562' │ 817906 │
│ 6 │ 'NestJS' │ '25147 ± 1.53%' │ '21981 ± 530.00' │ '43348 ± 0.15%' │ '45494 ± 1102' │ 39767 │
│ 7 │ 'tsyringe' │ '1342.1 ± 0.16%' │ '1283.0 ± 11.00' │ '765973 ± 0.02%' │ '779423 ± 6740' │ 745109 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.711x
inversifyCurrent vs inversify6 Speedup: 44.760x
inversifyCurrent vs inversify7 Speedup: 2.980x
inversifyCurrent vs inversify8 Speedup: 1.354x
inversifyCurrent vs awilix Speedup: 2.162x
inversifyCurrent vs NestJS Speedup: 41.656x
inversifyCurrent vs tsyringe Speedup: 2.357x
Get complex service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '265.59 ± 0.26%' │ '250.00 ± 9.00' │ '3904129 ± 0.01%' │ '4000000 ± 149378' │ 3765248 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '268.70 ± 0.16%' │ '251.00 ± 9.00' │ '3870025 ± 0.01%' │ '3984064 ± 137910' │ 3721625 │
│ 2 │ 'inversify6' │ '1136.7 ± 1.61%' │ '1042.0 ± 30.00' │ '928039 ± 0.02%' │ '959693 ± 28449' │ 879730 │
│ 3 │ 'inversify7' │ '317.33 ± 0.40%' │ '291.00 ± 10.00' │ '3330492 ± 0.01%' │ '3436426 ± 114167' │ 3151280 │
│ 4 │ 'inversify8' │ '264.95 ± 0.17%' │ '250.00 ± 9.00' │ '3909225 ± 0.01%' │ '4000000 ± 149378' │ 3774234 │
│ 5 │ 'awilix' │ '253.25 ± 0.16%' │ '231.00 ± 9.00' │ '4133734 ± 0.01%' │ '4329004 ± 162338' │ 3948623 │
│ 6 │ 'NestJS' │ '322.36 ± 0.18%' │ '301.00 ± 10.00' │ '3219457 ± 0.01%' │ '3322259 ± 106825' │ 3102129 │
│ 7 │ 'tsyringe' │ '328.30 ± 0.40%' │ '301.00 ± 10.00' │ '3209122 ± 0.01%' │ '3322259 ± 106825' │ 3045978 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.009x
inversifyCurrent vs inversify6 Speedup: 4.207x
inversifyCurrent vs inversify7 Speedup: 1.172x
inversifyCurrent vs inversify8 Speedup: 0.999x
inversifyCurrent vs awilix Speedup: 0.944x
inversifyCurrent vs NestJS Speedup: 1.213x
inversifyCurrent vs tsyringe Speedup: 1.217x
Get complex service in transient scope
┌─────────┬───────────────────────────────────────────────┬───────────────────┬────────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼───────────────────────────────────────────────┼───────────────────┼────────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '68384 ± 0.68%' │ '64331 ± 862.50' │ '15061 ± 0.17%' │ '15545 ± 210' │ 14624 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '117473 ± 0.46%' │ '114113 ± 1472.0' │ '8620 ± 0.15%' │ '8763 ± 114' │ 8513 │
│ 2 │ 'inversifyCurrent (Resolved Value)' │ '67217 ± 0.68%' │ '63960 ± 621.00' │ '15247 ± 0.15%' │ '15635 ± 151' │ 14878 │
│ 3 │ 'inversifyCurrent (Jitless) (Resolved Value)' │ '150978 ± 0.74%' │ '143209 ± 1463.0' │ '6795 ± 0.24%' │ '6983 ± 71' │ 6624 │
│ 4 │ 'inversify6' │ '5497092 ± 2.71%' │ '5228127 ± 147231' │ '185 ± 1.51%' │ '191 ± 5' │ 182 │
│ 5 │ 'inversify7' │ '294825 ± 0.50%' │ '288141 ± 1562.5' │ '3418 ± 0.20%' │ '3471 ± 19' │ 3392 │
│ 6 │ 'inversify8' │ '110547 ± 0.46%' │ '106410 ± 1051.5' │ '9182 ± 0.17%' │ '9398 ± 93' │ 9046 │
│ 7 │ 'awilix' │ '268529 ± 0.40%' │ '262622 ± 2976.0' │ '3752 ± 0.20%' │ '3808 ± 43' │ 3724 │
│ 8 │ 'NestJS' │ '81770 ± 1.82%' │ '72551 ± 1868.0' │ '13170 ± 0.24%' │ '13783 ± 358' │ 12230 │
│ 9 │ 'tsyringe' │ '212994 ± 0.52%' │ '206326 ± 1332.0' │ '4753 ± 0.21%' │ '4847 ± 31' │ 4695 │
└─────────┴───────────────────────────────────────────────┴───────────────────┴────────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.747x
inversifyCurrent vs inversifyCurrent (Resolved Value) Speedup: 0.988x
inversifyCurrent vs inversifyCurrent (Jitless) (Resolved Value) Speedup: 2.217x
inversifyCurrent vs inversify6 Speedup: 81.303x
inversifyCurrent vs inversify7 Speedup: 4.406x
inversifyCurrent vs inversify8 Speedup: 1.640x
inversifyCurrent vs awilix Speedup: 4.014x
inversifyCurrent vs NestJS Speedup: 1.144x
inversifyCurrent vs tsyringe Speedup: 3.169x
Get complex service with properties in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬────────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼────────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '78422 ± 0.79%' │ '73818 ± 771.00' │ '13133 ± 0.17%' │ '13547 ± 141' │ 12752 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '162116 ± 0.59%' │ '158287 ± 681.00' │ '6255 ± 0.19%' │ '6318 ± 27' │ 6169 │
│ 2 │ 'inversify6' │ '5968683 ± 2.44%' │ '5733889 ± 200911' │ '170 ± 1.52%' │ '174 ± 6' │ 168 │
│ 3 │ 'inversify7' │ '335303 ± 0.72%' │ '321693 ± 3077.0' │ '3030 ± 0.31%' │ '3109 ± 30' │ 2983 │
│ 4 │ 'inversify8' │ '210715 ± 0.77%' │ '204734 ± 1623.0' │ '4838 ± 0.24%' │ '4884 ± 39' │ 4746 │
│ 5 │ 'NestJS' │ '330884 ± 2.08%' │ '286346 ± 9627.0' │ '3283 ± 0.62%' │ '3492 ± 119' │ 3023 │
└─────────┴──────────────────────────────┴───────────────────┴────────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 2.100x
inversifyCurrent vs inversify6 Speedup: 77.203x
inversifyCurrent vs inversify7 Speedup: 4.334x
inversifyCurrent vs inversify8 Speedup: 2.715x
inversifyCurrent vs NestJS Speedup: 4.000x
Get complex async service in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬────────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼────────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '373716 ± 0.98%' │ '351824 ± 8566.0' │ '2751 ± 0.46%' │ '2842 ± 69' │ 2676 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '409609 ± 0.88%' │ '391373 ± 7820.0' │ '2497 ± 0.42%' │ '2555 ± 51' │ 2442 │
│ 2 │ 'inversify6' │ '5768768 ± 3.43%' │ '5390460 ± 296190' │ '179 ± 2.10%' │ '186 ± 10' │ 174 │
│ 3 │ 'inversify7' │ '715588 ± 0.87%' │ '691270 ± 9663.0' │ '1417 ± 0.46%' │ '1447 ± 20' │ 1398 │
│ 4 │ 'inversify8' │ '390511 ± 0.83%' │ '376825 ± 7313.0' │ '2611 ± 0.36%' │ '2654 ± 52' │ 2561 │
└─────────┴──────────────────────────────┴───────────────────┴────────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.102x
inversifyCurrent vs inversify6 Speedup: 15.383x
inversifyCurrent vs inversify7 Speedup: 1.941x
inversifyCurrent vs inversify8 Speedup: 1.054x[ESM] Running benchmarks...
Get service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '250.15 ± 0.15%' │ '231.00 ± 10.00' │ '4175800 ± 0.01%' │ '4329004 ± 179627' │ 3997597 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '245.18 ± 0.15%' │ '230.00 ± 10.00' │ '4250053 ± 0.01%' │ '4347826 ± 181159' │ 4078572 │
│ 2 │ 'inversify6' │ '947.18 ± 0.36%' │ '862.00 ± 11.00' │ '1120001 ± 0.02%' │ '1160093 ± 14995' │ 1055767 │
│ 3 │ 'inversify7' │ '297.05 ± 0.17%' │ '280.00 ± 10.00' │ '3480835 ± 0.01%' │ '3571429 ± 123153' │ 3366494 │
│ 4 │ 'inversify8' │ '249.47 ± 0.16%' │ '231.00 ± 9.00' │ '4181941 ± 0.01%' │ '4329004 ± 162338' │ 4008446 │
│ 5 │ 'awilix' │ '242.36 ± 0.30%' │ '221.00 ± 10.00' │ '4367356 ± 0.01%' │ '4524887 ± 214450' │ 4126063 │
│ 6 │ 'NestJS' │ '326.95 ± 0.38%' │ '301.00 ± 10.00' │ '3229167 ± 0.01%' │ '3322259 ± 106825' │ 3058589 │
│ 7 │ 'tsyringe' │ '303.07 ± 0.40%' │ '280.00 ± 10.00' │ '3512736 ± 0.01%' │ '3571429 ± 132275' │ 3299529 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 0.983x
inversifyCurrent vs inversify6 Speedup: 3.728x
inversifyCurrent vs inversify7 Speedup: 1.200x
inversifyCurrent vs inversify8 Speedup: 0.999x
inversifyCurrent vs awilix Speedup: 0.956x
inversifyCurrent vs NestJS Speedup: 1.293x
inversifyCurrent vs tsyringe Speedup: 1.189x
Get service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '302.63 ± 0.35%' │ '280.00 ± 10.00' │ '3478863 ± 0.01%' │ '3571429 ± 123153' │ 3304345 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '331.59 ± 0.26%' │ '311.00 ± 10.00' │ '3129527 ± 0.01%' │ '3215434 ± 100169' │ 3015809 │
│ 2 │ 'inversify6' │ '5480.5 ± 0.31%' │ '5070.0 ± 100.00' │ '190604 ± 0.06%' │ '197239 ± 3969' │ 182465 │
│ 3 │ 'inversify7' │ '517.74 ± 0.35%' │ '481.00 ± 10.00' │ '2043913 ± 0.01%' │ '2079002 ± 44140' │ 1931467 │
│ 4 │ 'inversify8' │ '312.15 ± 0.30%' │ '291.00 ± 10.00' │ '3355324 ± 0.01%' │ '3436426 ± 114167' │ 3203552 │
│ 5 │ 'awilix' │ '432.45 ± 0.43%' │ '401.00 ± 10.00' │ '2432206 ± 0.01%' │ '2493766 ± 63779' │ 2312386 │
│ 6 │ 'NestJS' │ '11295 ± 2.43%' │ '9538.0 ± 331.00' │ '99908 ± 0.10%' │ '104844 ± 3711' │ 88531 │
│ 7 │ 'tsyringe' │ '447.20 ± 0.16%' │ '421.00 ± 10.00' │ '2329885 ± 0.01%' │ '2375297 ± 57793' │ 2236155 │
└─────────┴──────────────────────────────┴──────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.112x
inversifyCurrent vs inversify6 Speedup: 18.252x
inversifyCurrent vs inversify7 Speedup: 1.702x
inversifyCurrent vs inversify8 Speedup: 1.037x
inversifyCurrent vs awilix Speedup: 1.430x
inversifyCurrent vs NestJS Speedup: 34.821x
inversifyCurrent vs tsyringe Speedup: 1.493x
Get wide service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '585.66 ± 0.38%' │ '551.00 ± 10.00' │ '1785852 ± 0.01%' │ '1814882 ± 33547' │ 1707468 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '978.40 ± 0.29%' │ '931.00 ± 10.00' │ '1058736 ± 0.02%' │ '1074114 ± 11662' │ 1022082 │
│ 2 │ 'inversify6' │ '25325 ± 0.39%' │ '23745 ± 190.00' │ '40798 ± 0.11%' │ '42114 ± 340' │ 39488 │
│ 3 │ 'inversify7' │ '1331.5 ± 0.32%' │ '1252.0 ± 19.00' │ '783347 ± 0.02%' │ '798722 ± 12308' │ 751046 │
│ 4 │ 'inversify8' │ '777.50 ± 0.32%' │ '741.00 ± 10.00' │ '1332407 ± 0.01%' │ '1349528 ± 18461' │ 1286182 │
│ 5 │ 'awilix' │ '1219.4 ± 0.16%' │ '1182.0 ± 20.00' │ '836661 ± 0.01%' │ '846024 ± 14077' │ 820065 │
│ 6 │ 'NestJS' │ '25064 ± 1.41%' │ '22392 ± 551.00' │ '42933 ± 0.13%' │ '44659 ± 1106' │ 39898 │
│ 7 │ 'tsyringe' │ '1343.9 ± 0.17%' │ '1282.0 ± 11.00' │ '767015 ± 0.02%' │ '780031 ± 6636' │ 744087 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.687x
inversifyCurrent vs inversify6 Speedup: 43.773x
inversifyCurrent vs inversify7 Speedup: 2.280x
inversifyCurrent vs inversify8 Speedup: 1.340x
inversifyCurrent vs awilix Speedup: 2.134x
inversifyCurrent vs NestJS Speedup: 41.596x
inversifyCurrent vs tsyringe Speedup: 2.328x
Get complex service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '267.26 ± 0.25%' │ '250.00 ± 10.00' │ '3899204 ± 0.01%' │ '4000000 ± 153846' │ 3741744 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '264.44 ± 0.17%' │ '250.00 ± 10.00' │ '3931579 ± 0.01%' │ '4000000 ± 153846' │ 3781572 │
│ 2 │ 'inversify6' │ '933.12 ± 1.79%' │ '832.00 ± 20.00' │ '1156686 ± 0.02%' │ '1201923 ± 28214' │ 1071679 │
│ 3 │ 'inversify7' │ '292.95 ± 0.16%' │ '271.00 ± 10.00' │ '3577265 ± 0.01%' │ '3690037 ± 131318' │ 3413593 │
│ 4 │ 'inversify8' │ '269.88 ± 0.15%' │ '251.00 ± 9.00' │ '3855579 ± 0.01%' │ '3984064 ± 137910' │ 3705391 │
│ 5 │ 'awilix' │ '257.25 ± 0.15%' │ '240.00 ± 10.00' │ '4052230 ± 0.01%' │ '4166667 ± 181159' │ 3887324 │
│ 6 │ 'NestJS' │ '319.89 ± 0.17%' │ '301.00 ± 10.00' │ '3246086 ± 0.01%' │ '3322259 ± 114167' │ 3126103 │
│ 7 │ 'tsyringe' │ '317.99 ± 0.42%' │ '291.00 ± 10.00' │ '3325781 ± 0.01%' │ '3436426 ± 114167' │ 3144748 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 0.992x
inversifyCurrent vs inversify6 Speedup: 3.371x
inversifyCurrent vs inversify7 Speedup: 1.090x
inversifyCurrent vs inversify8 Speedup: 1.011x
inversifyCurrent vs awilix Speedup: 0.962x
inversifyCurrent vs NestJS Speedup: 1.201x
inversifyCurrent vs tsyringe Speedup: 1.172x
Get complex service in transient scope
┌─────────┬───────────────────────────────────────────────┬───────────────────┬────────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼───────────────────────────────────────────────┼───────────────────┼────────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '67548 ± 0.76%' │ '63729 ± 721.00' │ '15253 ± 0.16%' │ '15691 ± 178' │ 14805 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '116287 ± 0.46%' │ '114194 ± 1102.0' │ '8717 ± 0.16%' │ '8757 ± 84' │ 8600 │
│ 2 │ 'inversifyCurrent (Resolved Value)' │ '68754 ± 0.76%' │ '64742 ± 933.00' │ '14960 ± 0.16%' │ '15446 ± 226' │ 14545 │
│ 3 │ 'inversifyCurrent (Jitless) (Resolved Value)' │ '166166 ± 0.61%' │ '161583 ± 3727.0' │ '6126 ± 0.21%' │ '6189 ± 145' │ 6019 │
│ 4 │ 'inversify6' │ '5310586 ± 3.14%' │ '5025192 ± 121658' │ '192 ± 1.56%' │ '199 ± 5' │ 189 │
│ 5 │ 'inversify7' │ '222559 ± 0.51%' │ '215965 ± 1323.0' │ '4543 ± 0.21%' │ '4630 ± 28' │ 4494 │
│ 6 │ 'inversify8' │ '109255 ± 0.41%' │ '108083 ± 1353.0' │ '9266 ± 0.15%' │ '9252 ± 115' │ 9153 │
│ 7 │ 'awilix' │ '265950 ± 0.37%' │ '260077 ± 2895.0' │ '3785 ± 0.19%' │ '3845 ± 43' │ 3761 │
│ 8 │ 'NestJS' │ '82354 ± 1.76%' │ '73408 ± 1583.0' │ '13022 ± 0.23%' │ '13622 ± 297' │ 12143 │
│ 9 │ 'tsyringe' │ '220619 ± 0.56%' │ '211807 ± 2065.0' │ '4605 ± 0.26%' │ '4721 ± 46' │ 4533 │
└─────────┴───────────────────────────────────────────────┴───────────────────┴────────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.750x
inversifyCurrent vs inversifyCurrent (Resolved Value) Speedup: 1.020x
inversifyCurrent vs inversifyCurrent (Jitless) (Resolved Value) Speedup: 2.490x
inversifyCurrent vs inversify6 Speedup: 79.240x
inversifyCurrent vs inversify7 Speedup: 3.358x
inversifyCurrent vs inversify8 Speedup: 1.646x
inversifyCurrent vs awilix Speedup: 4.030x
inversifyCurrent vs NestJS Speedup: 1.171x
inversifyCurrent vs tsyringe Speedup: 3.312x
Get complex service with properties in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬────────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼────────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '79627 ± 0.78%' │ '74540 ± 451.00' │ '12994 ± 0.19%' │ '13416 ± 82' │ 12559 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '164952 ± 0.61%' │ '160711 ± 792.00' │ '6152 ± 0.19%' │ '6222 ± 31' │ 6063 │
│ 2 │ 'inversify6' │ '5820148 ± 3.46%' │ '5510492 ± 162500' │ '176 ± 1.81%' │ '181 ± 5' │ 172 │
│ 3 │ 'inversify7' │ '262079 ± 0.68%' │ '252152 ± 1543.0' │ '3874 ± 0.26%' │ '3966 ± 24' │ 3816 │
│ 4 │ 'inversify8' │ '226017 ± 0.70%' │ '219431 ± 1803.0' │ '4502 ± 0.25%' │ '4557 ± 38' │ 4425 │
│ 5 │ 'NestJS' │ '331770 ± 2.10%' │ '289553 ± 9509.0' │ '3260 ± 0.59%' │ '3454 ± 116' │ 3015 │
└─────────┴──────────────────────────────┴───────────────────┴────────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 2.112x
inversifyCurrent vs inversify6 Speedup: 73.701x
inversifyCurrent vs inversify7 Speedup: 3.354x
inversifyCurrent vs inversify8 Speedup: 2.886x
inversifyCurrent vs NestJS Speedup: 3.986x
Get complex async service in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬────────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼────────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '363241 ± 0.86%' │ '347150 ± 7784.0' │ '2814 ± 0.39%' │ '2881 ± 65' │ 2753 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '387834 ± 0.84%' │ '372518 ± 7665.0' │ '2631 ± 0.37%' │ '2684 ± 55' │ 2579 │
│ 2 │ 'inversify6' │ '5418335 ± 3.79%' │ '5026114 ± 374271' │ '191 ± 2.20%' │ '199 ± 15' │ 185 │
│ 3 │ 'inversify7' │ '654028 ± 0.97%' │ '626714 ± 9938.5' │ '1557 ± 0.50%' │ '1596 ± 25' │ 1530 │
│ 4 │ 'inversify8' │ '378632 ± 0.85%' │ '363741 ± 7159.0' │ '2695 ± 0.37%' │ '2749 ± 54' │ 2642 │
└─────────┴──────────────────────────────┴───────────────────┴────────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.070x
inversifyCurrent vs inversify6 Speedup: 14.693x
inversifyCurrent vs inversify7 Speedup: 1.807x
inversifyCurrent vs inversify8 Speedup: 1.044x |
…e specific csp resolvers
|
Caution Review failedAn error occurred during the review process. Please try again later. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Benchmarks results:[CJS] Running benchmarks...
Get service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '266.55 ± 0.16%' │ '250.00 ± 10.00' │ '3895279 ± 0.01%' │ '4000000 ± 166667' │ 3751669 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '254.33 ± 0.13%' │ '231.00 ± 10.00' │ '4108507 ± 0.01%' │ '4329004 ± 195883' │ 3931926 │
│ 2 │ 'inversify6' │ '1147.5 ± 0.26%' │ '1082.0 ± 50.00' │ '905136 ± 0.02%' │ '924214 ± 40822' │ 871471 │
│ 3 │ 'inversify7' │ '327.35 ± 0.14%' │ '301.00 ± 19.00' │ '3197929 ± 0.01%' │ '3322259 ± 197259' │ 3054838 │
│ 4 │ 'inversify8' │ '273.47 ± 0.16%' │ '251.00 ± 10.00' │ '3808081 ± 0.01%' │ '3984064 ± 165314' │ 3656678 │
│ 5 │ 'awilix' │ '242.13 ± 0.25%' │ '220.00 ± 10.00' │ '4357998 ± 0.01%' │ '4545455 ± 216450' │ 4130010 │
│ 6 │ 'NestJS' │ '319.60 ± 0.33%' │ '291.00 ± 11.00' │ '3284842 ± 0.01%' │ '3436426 ± 135002' │ 3128896 │
│ 7 │ 'tsyringe' │ '325.92 ± 0.32%' │ '300.00 ± 19.00' │ '3237119 ± 0.01%' │ '3333333 ± 225386' │ 3068221 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 0.948x
inversifyCurrent vs inversify6 Speedup: 4.304x
inversifyCurrent vs inversify7 Speedup: 1.218x
inversifyCurrent vs inversify8 Speedup: 1.023x
inversifyCurrent vs awilix Speedup: 0.894x
inversifyCurrent vs NestJS Speedup: 1.186x
inversifyCurrent vs tsyringe Speedup: 1.203x
Get service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '345.48 ± 0.36%' │ '300.00 ± 20.00' │ '3174961 ± 0.02%' │ '3333333 ± 238095' │ 2894506 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '339.07 ± 0.27%' │ '311.00 ± 11.00' │ '3095364 ± 0.01%' │ '3215434 ± 117899' │ 2949226 │
│ 2 │ 'inversify6' │ '5483.4 ± 0.26%' │ '5108.0 ± 91.00' │ '189167 ± 0.05%' │ '195771 ± 3551' │ 182368 │
│ 3 │ 'inversify7' │ '564.69 ± 0.14%' │ '531.00 ± 21.00' │ '1833407 ± 0.02%' │ '1883239 ± 77545' │ 1770875 │
│ 4 │ 'inversify8' │ '312.17 ± 0.27%' │ '291.00 ± 11.00' │ '3353682 ± 0.01%' │ '3436426 ± 135002' │ 3203417 │
│ 5 │ 'awilix' │ '447.12 ± 0.37%' │ '401.00 ± 11.00' │ '2409091 ± 0.01%' │ '2493766 ± 70337' │ 2236545 │
│ 6 │ 'NestJS' │ '10830 ± 2.08%' │ '9405.0 ± 300.00' │ '101806 ± 0.09%' │ '106326 ± 3395' │ 92339 │
│ 7 │ 'tsyringe' │ '461.43 ± 0.15%' │ '431.00 ± 20.00' │ '2260261 ± 0.02%' │ '2320186 ± 112904' │ 2167159 │
└─────────┴──────────────────────────────┴──────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.026x
inversifyCurrent vs inversify6 Speedup: 16.784x
inversifyCurrent vs inversify7 Speedup: 1.732x
inversifyCurrent vs inversify8 Speedup: 0.947x
inversifyCurrent vs awilix Speedup: 1.318x
inversifyCurrent vs NestJS Speedup: 31.186x
inversifyCurrent vs tsyringe Speedup: 1.405x
Get wide service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '575.99 ± 0.31%' │ '541.00 ± 11.00' │ '1805063 ± 0.01%' │ '1848429 ± 38364' │ 1736127 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '984.78 ± 0.28%' │ '912.00 ± 21.00' │ '1065805 ± 0.02%' │ '1096491 ± 25843' │ 1015461 │
│ 2 │ 'inversify6' │ '25910 ± 0.52%' │ '23425 ± 290.00' │ '40768 ± 0.15%' │ '42689 ± 535' │ 38595 │
│ 3 │ 'inversify7' │ '1756.7 ± 0.24%' │ '1673.0 ± 30.00' │ '586129 ± 0.02%' │ '597729 ± 10914' │ 569237 │
│ 4 │ 'inversify8' │ '786.62 ± 0.27%' │ '751.00 ± 20.00' │ '1312473 ± 0.01%' │ '1331558 ± 34541' │ 1271262 │
│ 5 │ 'awilix' │ '1355.3 ± 0.26%' │ '1302.0 ± 40.00' │ '756552 ± 0.02%' │ '768049 ± 22893' │ 737843 │
│ 6 │ 'NestJS' │ '24797 ± 1.37%' │ '22524 ± 550.00' │ '42899 ± 0.12%' │ '44397 ± 1079' │ 40328 │
│ 7 │ 'tsyringe' │ '1415.1 ± 0.14%' │ '1352.0 ± 30.00' │ '724991 ± 0.02%' │ '739645 ± 16056' │ 706648 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.694x
inversifyCurrent vs inversify6 Speedup: 44.276x
inversifyCurrent vs inversify7 Speedup: 3.080x
inversifyCurrent vs inversify8 Speedup: 1.375x
inversifyCurrent vs awilix Speedup: 2.386x
inversifyCurrent vs NestJS Speedup: 42.077x
inversifyCurrent vs tsyringe Speedup: 2.490x
Get complex service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '272.61 ± 0.23%' │ '251.00 ± 11.00' │ '3807124 ± 0.01%' │ '3984064 ± 182603' │ 3668179 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '283.35 ± 0.13%' │ '261.00 ± 11.00' │ '3662675 ± 0.01%' │ '3831418 ± 168582' │ 3529221 │
│ 2 │ 'inversify6' │ '1164.6 ± 1.51%' │ '1082.0 ± 50.00' │ '902904 ± 0.02%' │ '924214 ± 44778' │ 858689 │
│ 3 │ 'inversify7' │ '334.59 ± 0.33%' │ '310.00 ± 20.00' │ '3157882 ± 0.01%' │ '3225807 ± 210619' │ 2988727 │
│ 4 │ 'inversify8' │ '273.63 ± 0.10%' │ '260.00 ± 10.00' │ '3782203 ± 0.01%' │ '3846154 ± 153846' │ 3654567 │
│ 5 │ 'awilix' │ '281.08 ± 0.26%' │ '260.00 ± 11.00' │ '3722130 ± 0.01%' │ '3846154 ± 156117' │ 3557767 │
│ 6 │ 'NestJS' │ '320.88 ± 0.21%' │ '301.00 ± 11.00' │ '3227803 ± 0.01%' │ '3322259 ± 126017' │ 3116393 │
│ 7 │ 'tsyringe' │ '338.90 ± 0.35%' │ '310.00 ± 19.00' │ '3119352 ± 0.01%' │ '3225806 ± 204658' │ 2950731 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.039x
inversifyCurrent vs inversify6 Speedup: 4.217x
inversifyCurrent vs inversify7 Speedup: 1.206x
inversifyCurrent vs inversify8 Speedup: 1.007x
inversifyCurrent vs awilix Speedup: 1.023x
inversifyCurrent vs NestJS Speedup: 1.179x
inversifyCurrent vs tsyringe Speedup: 1.220x
Get complex service in transient scope
┌─────────┬───────────────────────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼───────────────────────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '73957 ± 0.53%' │ '73050 ± 901.00' │ '13815 ± 0.17%' │ '13689 ± 169' │ 13522 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '118618 ± 0.38%' │ '114983 ± 1832.0' │ '8515 ± 0.14%' │ '8697 ± 140' │ 8431 │
│ 2 │ 'inversifyCurrent (Resolved Value)' │ '68021 ± 0.53%' │ '65648 ± 479.00' │ '14965 ± 0.13%' │ '15233 ± 111' │ 14702 │
│ 3 │ 'inversifyCurrent (Jitless) (Resolved Value)' │ '85392 ± 0.41%' │ '82945 ± 1702.0' │ '11871 ± 0.13%' │ '12056 ± 248' │ 11711 │
│ 4 │ 'inversify6' │ '4843313 ± 2.46%' │ '4618771 ± 31007' │ '210 ± 1.33%' │ '217 ± 1' │ 207 │
│ 5 │ 'inversify7' │ '276117 ± 0.42%' │ '269917 ± 1902.0' │ '3648 ± 0.20%' │ '3705 ± 26' │ 3622 │
│ 6 │ 'inversify8' │ '105435 ± 0.38%' │ '102715 ± 822.00' │ '9583 ± 0.13%' │ '9736 ± 78' │ 9485 │
│ 7 │ 'awilix' │ '292863 ± 0.30%' │ '287384 ± 2164.0' │ '3430 ± 0.18%' │ '3480 ± 26' │ 3415 │
│ 8 │ 'NestJS' │ '79496 ± 1.51%' │ '72239 ± 1372.0' │ '13320 ± 0.20%' │ '13843 ± 264' │ 12589 │
│ 9 │ 'tsyringe' │ '221430 ± 0.36%' │ '216717 ± 2294.0' │ '4549 ± 0.18%' │ '4614 ± 49' │ 4517 │
└─────────┴───────────────────────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.622x
inversifyCurrent vs inversifyCurrent (Resolved Value) Speedup: 0.923x
inversifyCurrent vs inversifyCurrent (Jitless) (Resolved Value) Speedup: 1.164x
inversifyCurrent vs inversify6 Speedup: 65.803x
inversifyCurrent vs inversify7 Speedup: 3.787x
inversifyCurrent vs inversify8 Speedup: 1.442x
inversifyCurrent vs awilix Speedup: 4.027x
inversifyCurrent vs NestJS Speedup: 1.037x
inversifyCurrent vs tsyringe Speedup: 3.037x
Get complex service with properties in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '80688 ± 0.63%' │ '77221 ± 441.00' │ '12653 ± 0.15%' │ '12950 ± 74' │ 12394 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '176782 ± 0.63%' │ '169780 ± 1323.0' │ '5785 ± 0.28%' │ '5890 ± 46' │ 5657 │
│ 2 │ 'inversify6' │ '5336567 ± 2.33%' │ '5095419 ± 39003' │ '190 ± 1.34%' │ '196 ± 2' │ 188 │
│ 3 │ 'inversify7' │ '330254 ± 0.65%' │ '320858 ± 2107.5' │ '3063 ± 0.26%' │ '3117 ± 21' │ 3028 │
│ 4 │ 'inversify8' │ '215136 ± 1.58%' │ '206642 ± 3225.0' │ '4774 ± 0.26%' │ '4839 ± 76' │ 4649 │
│ 5 │ 'NestJS' │ '332035 ± 1.92%' │ '296212 ± 7016.0' │ '3214 ± 0.53%' │ '3376 ± 81' │ 3012 │
└─────────┴──────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 2.187x
inversifyCurrent vs inversify6 Speedup: 66.562x
inversifyCurrent vs inversify7 Speedup: 4.131x
inversifyCurrent vs inversify8 Speedup: 2.651x
inversifyCurrent vs NestJS Speedup: 3.937x
Get complex async service in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '352920 ± 0.96%' │ '333708 ± 10531' │ '2913 ± 0.44%' │ '2997 ± 96' │ 2834 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '395462 ± 0.85%' │ '379982 ± 10829' │ '2581 ± 0.38%' │ '2632 ± 76' │ 2529 │
│ 2 │ 'inversify6' │ '4907691 ± 2.60%' │ '4611375 ± 59751' │ '208 ± 1.50%' │ '217 ± 3' │ 204 │
│ 3 │ 'inversify7' │ '693359 ± 0.89%' │ '671304 ± 6009.0' │ '1463 ± 0.45%' │ '1490 ± 13' │ 1443 │
│ 4 │ 'inversify8' │ '371287 ± 0.89%' │ '354846 ± 10466' │ '2758 ± 0.40%' │ '2818 ± 84' │ 2694 │
└─────────┴──────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.129x
inversifyCurrent vs inversify6 Speedup: 14.023x
inversifyCurrent vs inversify7 Speedup: 1.992x
inversifyCurrent vs inversify8 Speedup: 1.056x[ESM] Running benchmarks...
Get service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '268.90 ± 0.15%' │ '250.00 ± 10.00' │ '3867795 ± 0.01%' │ '4000000 ± 166667' │ 3718921 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '285.29 ± 0.27%' │ '251.00 ± 11.00' │ '3858041 ± 0.01%' │ '3984064 ± 182603' │ 3505192 │
│ 2 │ 'inversify6' │ '985.53 ± 0.28%' │ '921.00 ± 50.00' │ '1064715 ± 0.02%' │ '1085776 ± 61013' │ 1014682 │
│ 3 │ 'inversify7' │ '317.39 ± 0.19%' │ '291.00 ± 20.00' │ '3309008 ± 0.01%' │ '3436426 ± 253611' │ 3150688 │
│ 4 │ 'inversify8' │ '294.31 ± 0.18%' │ '270.00 ± 19.00' │ '3606081 ± 0.01%' │ '3703704 ± 255428' │ 3397827 │
│ 5 │ 'awilix' │ '251.97 ± 0.25%' │ '230.00 ± 19.00' │ '4201510 ± 0.01%' │ '4347826 ± 347826' │ 3968738 │
│ 6 │ 'NestJS' │ '328.46 ± 0.34%' │ '301.00 ± 11.00' │ '3200870 ± 0.01%' │ '3322259 ± 126017' │ 3044508 │
│ 7 │ 'tsyringe' │ '317.05 ± 0.31%' │ '291.00 ± 20.00' │ '3333277 ± 0.01%' │ '3436426 ± 253611' │ 3154058 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.003x
inversifyCurrent vs inversify6 Speedup: 3.633x
inversifyCurrent vs inversify7 Speedup: 1.169x
inversifyCurrent vs inversify8 Speedup: 1.073x
inversifyCurrent vs awilix Speedup: 0.921x
inversifyCurrent vs NestJS Speedup: 1.208x
inversifyCurrent vs tsyringe Speedup: 1.160x
Get service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '312.39 ± 0.27%' │ '290.00 ± 19.00' │ '3346079 ± 0.01%' │ '3448276 ± 222469' │ 3201106 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '353.92 ± 0.21%' │ '331.00 ± 19.00' │ '2931565 ± 0.01%' │ '3021148 ± 164005' │ 2825476 │
│ 2 │ 'inversify6' │ '5742.1 ± 0.31%' │ '5378.0 ± 130.00' │ '180666 ± 0.05%' │ '185943 ± 4606' │ 174153 │
│ 3 │ 'inversify7' │ '562.42 ± 0.31%' │ '521.00 ± 30.00' │ '1868883 ± 0.02%' │ '1919386 ± 117274' │ 1778035 │
│ 4 │ 'inversify8' │ '341.40 ± 0.23%' │ '311.00 ± 19.00' │ '3072923 ± 0.01%' │ '3215434 ± 185131' │ 2929109 │
│ 5 │ 'awilix' │ '459.68 ± 0.30%' │ '421.00 ± 20.00' │ '2273000 ± 0.02%' │ '2375297 ± 107723' │ 2175417 │
│ 6 │ 'NestJS' │ '11130 ± 2.02%' │ '9745.0 ± 311.00' │ '98438 ± 0.09%' │ '102617 ± 3361' │ 89850 │
│ 7 │ 'tsyringe' │ '474.29 ± 0.10%' │ '441.00 ± 21.00' │ '2191654 ± 0.02%' │ '2267574 ± 113379' │ 2108429 │
└─────────┴──────────────────────────────┴──────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.141x
inversifyCurrent vs inversify6 Speedup: 18.521x
inversifyCurrent vs inversify7 Speedup: 1.790x
inversifyCurrent vs inversify8 Speedup: 1.089x
inversifyCurrent vs awilix Speedup: 1.472x
inversifyCurrent vs NestJS Speedup: 33.992x
inversifyCurrent vs tsyringe Speedup: 1.527x
Get wide service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '582.64 ± 0.32%' │ '551.00 ± 20.00' │ '1784258 ± 0.01%' │ '1814882 ± 63569' │ 1716327 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '974.63 ± 0.21%' │ '931.00 ± 30.00' │ '1054423 ± 0.02%' │ '1074114 ± 34534' │ 1026026 │
│ 2 │ 'inversify6' │ '24854 ± 0.33%' │ '23426 ± 320.00' │ '41408 ± 0.11%' │ '42688 ± 591' │ 40236 │
│ 3 │ 'inversify7' │ '1428.5 ± 0.25%' │ '1352.0 ± 30.00' │ '724256 ± 0.02%' │ '739645 ± 16785' │ 700035 │
│ 4 │ 'inversify8' │ '758.50 ± 0.25%' │ '721.00 ± 20.00' │ '1360870 ± 0.01%' │ '1386963 ± 37435' │ 1318387 │
│ 5 │ 'awilix' │ '1395.8 ± 0.26%' │ '1332.0 ± 30.00' │ '735010 ± 0.02%' │ '750751 ± 17298' │ 716421 │
│ 6 │ 'NestJS' │ '24610 ± 1.19%' │ '22604 ± 510.50' │ '42914 ± 0.11%' │ '44240 ± 1001' │ 40634 │
│ 7 │ 'tsyringe' │ '1392.0 ± 0.14%' │ '1332.0 ± 30.00' │ '737096 ± 0.02%' │ '750751 ± 16536' │ 718377 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.692x
inversifyCurrent vs inversify6 Speedup: 43.090x
inversifyCurrent vs inversify7 Speedup: 2.464x
inversifyCurrent vs inversify8 Speedup: 1.311x
inversifyCurrent vs awilix Speedup: 2.428x
inversifyCurrent vs NestJS Speedup: 41.577x
inversifyCurrent vs tsyringe Speedup: 2.421x
Get complex service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '279.45 ± 0.21%' │ '261.00 ± 11.00' │ '3708138 ± 0.01%' │ '3831418 ± 168582' │ 3578511 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '288.59 ± 0.13%' │ '270.00 ± 11.00' │ '3603353 ± 0.01%' │ '3703704 ± 144985' │ 3465067 │
│ 2 │ 'inversify6' │ '998.36 ± 1.65%' │ '921.00 ± 50.00' │ '1060220 ± 0.02%' │ '1085776 ± 61013' │ 1001645 │
│ 3 │ 'inversify7' │ '310.11 ± 0.15%' │ '281.00 ± 20.00' │ '3383551 ± 0.02%' │ '3558719 ± 272699' │ 3224708 │
│ 4 │ 'inversify8' │ '281.66 ± 0.13%' │ '261.00 ± 11.00' │ '3675624 ± 0.01%' │ '3831418 ± 168583' │ 3550431 │
│ 5 │ 'awilix' │ '303.47 ± 0.39%' │ '251.00 ± 11.00' │ '3773676 ± 0.02%' │ '3984064 ± 182603' │ 3295262 │
│ 6 │ 'NestJS' │ '327.28 ± 0.12%' │ '310.00 ± 19.00' │ '3167263 ± 0.01%' │ '3225806 ± 210620' │ 3055456 │
│ 7 │ 'tsyringe' │ '326.13 ± 0.32%' │ '301.00 ± 20.00' │ '3231880 ± 0.01%' │ '3322259 ± 236460' │ 3066288 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.029x
inversifyCurrent vs inversify6 Speedup: 3.498x
inversifyCurrent vs inversify7 Speedup: 1.096x
inversifyCurrent vs inversify8 Speedup: 1.009x
inversifyCurrent vs awilix Speedup: 0.983x
inversifyCurrent vs NestJS Speedup: 1.171x
inversifyCurrent vs tsyringe Speedup: 1.147x
Get complex service in transient scope
┌─────────┬───────────────────────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼───────────────────────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '68457 ± 0.58%' │ '65890 ± 491.00' │ '14889 ± 0.13%' │ '15177 ± 114' │ 14608 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '116937 ± 0.41%' │ '114169 ± 1397.5' │ '8646 ± 0.14%' │ '8759 ± 107' │ 8552 │
│ 2 │ 'inversifyCurrent (Resolved Value)' │ '68317 ± 0.61%' │ '65480 ± 501.00' │ '14953 ± 0.14%' │ '15272 ± 118' │ 14638 │
│ 3 │ 'inversifyCurrent (Jitless) (Resolved Value)' │ '84715 ± 0.49%' │ '81875 ± 742.00' │ '11991 ± 0.13%' │ '12214 ± 112' │ 11805 │
│ 4 │ 'inversify6' │ '4999009 ± 2.49%' │ '4771546 ± 29595' │ '203 ± 1.31%' │ '210 ± 1' │ 201 │
│ 5 │ 'inversify7' │ '228126 ± 0.68%' │ '220269 ± 1408.0' │ '4450 ± 0.22%' │ '4540 ± 29' │ 4384 │
│ 6 │ 'inversify8' │ '109889 ± 0.35%' │ '107283 ± 931.00' │ '9186 ± 0.13%' │ '9321 ± 81' │ 9101 │
│ 7 │ 'awilix' │ '285882 ± 0.30%' │ '279984 ± 2063.0' │ '3514 ± 0.17%' │ '3572 ± 27' │ 3498 │
│ 8 │ 'NestJS' │ '80983 ± 1.49%' │ '73652 ± 1463.0' │ '13062 ± 0.21%' │ '13577 ± 273' │ 12349 │
│ 9 │ 'tsyringe' │ '227276 ± 0.65%' │ '215177 ± 1582.0' │ '4502 ± 0.31%' │ '4647 ± 34' │ 4400 │
└─────────┴───────────────────────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.722x
inversifyCurrent vs inversifyCurrent (Resolved Value) Speedup: 0.996x
inversifyCurrent vs inversifyCurrent (Jitless) (Resolved Value) Speedup: 1.242x
inversifyCurrent vs inversify6 Speedup: 73.246x
inversifyCurrent vs inversify7 Speedup: 3.346x
inversifyCurrent vs inversify8 Speedup: 1.621x
inversifyCurrent vs awilix Speedup: 4.237x
inversifyCurrent vs NestJS Speedup: 1.140x
inversifyCurrent vs tsyringe Speedup: 3.307x
Get complex service with properties in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '80283 ± 0.70%' │ '76235 ± 520.00' │ '12776 ± 0.17%' │ '13117 ± 89' │ 12456 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '162889 ± 0.52%' │ '159300 ± 1292.0' │ '6219 ± 0.19%' │ '6277 ± 51' │ 6140 │
│ 2 │ 'inversify6' │ '5550018 ± 2.68%' │ '5242705 ± 40421' │ '184 ± 1.54%' │ '191 ± 1' │ 181 │
│ 3 │ 'inversify7' │ '271930 ± 0.89%' │ '260846 ± 1873.0' │ '3755 ± 0.28%' │ '3834 ± 28' │ 3678 │
│ 4 │ 'inversify8' │ '204832 ± 0.67%' │ '198612 ± 1903.0' │ '4964 ± 0.23%' │ '5035 ± 48' │ 4883 │
│ 5 │ 'NestJS' │ '336891 ± 1.88%' │ '300647 ± 7211.0' │ '3161 ± 0.53%' │ '3326 ± 81' │ 2969 │
└─────────┴──────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 2.055x
inversifyCurrent vs inversify6 Speedup: 69.611x
inversifyCurrent vs inversify7 Speedup: 3.403x
inversifyCurrent vs inversify8 Speedup: 2.574x
inversifyCurrent vs NestJS Speedup: 4.041x
Get complex async service in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '341826 ± 0.96%' │ '325359 ± 7471.5' │ '2994 ± 0.38%' │ '3074 ± 71' │ 2926 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '389566 ± 0.85%' │ '373257 ± 10615' │ '2622 ± 0.39%' │ '2679 ± 77' │ 2567 │
│ 2 │ 'inversify6' │ '5007856 ± 3.20%' │ '4588980 ± 64578' │ '205 ± 1.83%' │ '218 ± 3' │ 200 │
│ 3 │ 'inversify7' │ '722445 ± 2.33%' │ '625380 ± 10227' │ '1503 ± 0.99%' │ '1599 ± 26' │ 1385 │
│ 4 │ 'inversify8' │ '374557 ± 0.91%' │ '355755 ± 12654' │ '2738 ± 0.42%' │ '2811 ± 101' │ 2670 │
└─────────┴──────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.142x
inversifyCurrent vs inversify6 Speedup: 14.578x
inversifyCurrent vs inversify7 Speedup: 1.992x
inversifyCurrent vs inversify8 Speedup: 1.094x |
Benchmarks results:[CJS] Running benchmarks...
Get service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '250.27 ± 0.16%' │ '231.00 ± 9.00' │ '4127617 ± 0.01%' │ '4329004 ± 162338' │ 3995690 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '259.79 ± 0.10%' │ '241.00 ± 9.00' │ '3970441 ± 0.01%' │ '4149378 ± 149378' │ 3849284 │
│ 2 │ 'inversify6' │ '1094.9 ± 0.42%' │ '1013.0 ± 21.00' │ '954090 ± 0.02%' │ '987167 ± 20898' │ 913366 │
│ 3 │ 'inversify7' │ '311.91 ± 0.12%' │ '291.00 ± 10.00' │ '3329202 ± 0.01%' │ '3436426 ± 122293' │ 3206019 │
│ 4 │ 'inversify8' │ '251.38 ± 0.11%' │ '240.00 ± 10.00' │ '4102058 ± 0.01%' │ '4166667 ± 166667' │ 3978024 │
│ 5 │ 'awilix' │ '240.37 ± 0.22%' │ '221.00 ± 9.00' │ '4331963 ± 0.01%' │ '4524887 ± 177061' │ 4160178 │
│ 6 │ 'NestJS' │ '324.09 ± 0.23%' │ '301.00 ± 10.00' │ '3203675 ± 0.01%' │ '3322259 ± 106825' │ 3085577 │
│ 7 │ 'tsyringe' │ '318.93 ± 0.25%' │ '300.00 ± 10.00' │ '3269471 ± 0.01%' │ '3333333 ± 114943' │ 3135500 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.040x
inversifyCurrent vs inversify6 Speedup: 4.326x
inversifyCurrent vs inversify7 Speedup: 1.240x
inversifyCurrent vs inversify8 Speedup: 1.006x
inversifyCurrent vs awilix Speedup: 0.953x
inversifyCurrent vs NestJS Speedup: 1.288x
inversifyCurrent vs tsyringe Speedup: 1.262x
Get service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '308.65 ± 1.34%' │ '290.00 ± 10.00' │ '3387342 ± 0.01%' │ '3448276 ± 123153' │ 3239911 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '340.92 ± 0.19%' │ '321.00 ± 10.00' │ '3023262 ± 0.01%' │ '3115265 ± 94117' │ 2933223 │
│ 2 │ 'inversify6' │ '6104.2 ± 0.27%' │ '5641.0 ± 90.00' │ '170881 ± 0.06%' │ '177274 ± 2874' │ 163822 │
│ 3 │ 'inversify7' │ '602.06 ± 0.16%' │ '571.00 ± 10.00' │ '1717320 ± 0.01%' │ '1751313 ± 31218' │ 1660969 │
│ 4 │ 'inversify8' │ '288.92 ± 0.22%' │ '271.00 ± 10.00' │ '3606521 ± 0.01%' │ '3690037 ± 141381' │ 3461150 │
│ 5 │ 'awilix' │ '441.29 ± 0.27%' │ '420.00 ± 10.00' │ '2347369 ± 0.01%' │ '2380952 ± 55371' │ 2266076 │
│ 6 │ 'NestJS' │ '10791 ± 1.88%' │ '9268.0 ± 231.00' │ '102682 ± 0.10%' │ '107898 ± 2712' │ 92670 │
│ 7 │ 'tsyringe' │ '452.19 ± 0.17%' │ '421.00 ± 10.00' │ '2296302 ± 0.01%' │ '2375297 ± 57793' │ 2211479 │
└─────────┴──────────────────────────────┴──────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.120x
inversifyCurrent vs inversify6 Speedup: 19.823x
inversifyCurrent vs inversify7 Speedup: 1.972x
inversifyCurrent vs inversify8 Speedup: 0.939x
inversifyCurrent vs awilix Speedup: 1.443x
inversifyCurrent vs NestJS Speedup: 32.989x
inversifyCurrent vs tsyringe Speedup: 1.475x
Get wide service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '572.98 ± 0.26%' │ '541.00 ± 10.00' │ '1800371 ± 0.01%' │ '1848429 ± 34810' │ 1745262 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '987.46 ± 0.23%' │ '941.00 ± 10.00' │ '1047834 ± 0.02%' │ '1062699 ± 11415' │ 1012696 │
│ 2 │ 'inversify6' │ '27236 ± 0.37%' │ '25558 ± 171.00' │ '37853 ± 0.12%' │ '39127 ± 264' │ 36717 │
│ 3 │ 'inversify7' │ '1683.2 ± 0.19%' │ '1623.0 ± 20.00' │ '608622 ± 0.02%' │ '616143 ± 7500' │ 594118 │
│ 4 │ 'inversify8' │ '770.01 ± 0.21%' │ '732.00 ± 10.00' │ '1340168 ± 0.01%' │ '1366120 ± 18411' │ 1298685 │
│ 5 │ 'awilix' │ '1292.5 ± 0.21%' │ '1252.0 ± 20.00' │ '791321 ± 0.01%' │ '798722 ± 12559' │ 773679 │
│ 6 │ 'NestJS' │ '24369 ± 1.11%' │ '21952 ± 382.00' │ '43764 ± 0.13%' │ '45554 ± 805' │ 41036 │
│ 7 │ 'tsyringe' │ '1450.3 ± 0.12%' │ '1402.0 ± 11.00' │ '705489 ± 0.02%' │ '713267 ± 5553' │ 689527 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.718x
inversifyCurrent vs inversify6 Speedup: 47.562x
inversifyCurrent vs inversify7 Speedup: 2.958x
inversifyCurrent vs inversify8 Speedup: 1.343x
inversifyCurrent vs awilix Speedup: 2.275x
inversifyCurrent vs NestJS Speedup: 41.138x
inversifyCurrent vs tsyringe Speedup: 2.552x
Get complex service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '279.95 ± 0.22%' │ '261.00 ± 10.00' │ '3685457 ± 0.01%' │ '3831418 ± 141381' │ 3572078 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '277.73 ± 0.14%' │ '261.00 ± 9.00' │ '3714346 ± 0.01%' │ '3831418 ± 127714' │ 3600662 │
│ 2 │ 'inversify6' │ '1088.5 ± 1.64%' │ '1012.0 ± 30.00' │ '961290 ± 0.02%' │ '988142 ± 30188' │ 918707 │
│ 3 │ 'inversify7' │ '316.72 ± 0.27%' │ '300.00 ± 10.00' │ '3293566 ± 0.01%' │ '3333333 ± 114942' │ 3157390 │
│ 4 │ 'inversify8' │ '279.22 ± 0.25%' │ '261.00 ± 9.00' │ '3693365 ± 0.01%' │ '3831418 ± 127714' │ 3581358 │
│ 5 │ 'awilix' │ '259.78 ± 0.21%' │ '241.00 ± 10.00' │ '3997808 ± 0.01%' │ '4149378 ± 165314' │ 3849391 │
│ 6 │ 'NestJS' │ '325.53 ± 0.13%' │ '310.00 ± 10.00' │ '3161836 ± 0.01%' │ '3225806 ± 107527' │ 3071949 │
│ 7 │ 'tsyringe' │ '323.35 ± 0.24%' │ '301.00 ± 10.00' │ '3210737 ± 0.01%' │ '3322259 ± 106825' │ 3092586 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 0.992x
inversifyCurrent vs inversify6 Speedup: 3.834x
inversifyCurrent vs inversify7 Speedup: 1.119x
inversifyCurrent vs inversify8 Speedup: 0.998x
inversifyCurrent vs awilix Speedup: 0.922x
inversifyCurrent vs NestJS Speedup: 1.166x
inversifyCurrent vs tsyringe Speedup: 1.148x
Get complex service in transient scope
┌─────────┬───────────────────────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼───────────────────────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '66141 ± 0.56%' │ '62948 ± 511.00' │ '15459 ± 0.15%' │ '15886 ± 128' │ 15120 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '116134 ± 0.39%' │ '115186 ± 2414.0' │ '8701 ± 0.14%' │ '8682 ± 183' │ 8611 │
│ 2 │ 'inversifyCurrent (Resolved Value)' │ '67068 ± 0.54%' │ '64230 ± 612.00' │ '15215 ± 0.14%' │ '15569 ± 149' │ 14911 │
│ 3 │ 'inversifyCurrent (Jitless) (Resolved Value)' │ '86352 ± 0.46%' │ '83737 ± 1624.0' │ '11752 ± 0.14%' │ '11942 ± 235' │ 11581 │
│ 4 │ 'inversify6' │ '5383166 ± 2.45%' │ '5123372 ± 20544' │ '189 ± 1.39%' │ '195 ± 1' │ 186 │
│ 5 │ 'inversify7' │ '303178 ± 0.65%' │ '295836 ± 2776.0' │ '3332 ± 0.21%' │ '3380 ± 32' │ 3299 │
│ 6 │ 'inversify8' │ '105991 ± 0.37%' │ '103564 ± 892.00' │ '9537 ± 0.14%' │ '9656 ± 83' │ 9435 │
│ 7 │ 'awilix' │ '271858 ± 0.31%' │ '266390 ± 1733.0' │ '3696 ± 0.17%' │ '3754 ± 25' │ 3679 │
│ 8 │ 'NestJS' │ '80226 ± 1.64%' │ '71494 ± 1242.0' │ '13325 ± 0.23%' │ '13987 ± 245' │ 12465 │
│ 9 │ 'tsyringe' │ '218318 ± 0.43%' │ '213862 ± 2915.0' │ '4623 ± 0.19%' │ '4676 ± 64' │ 4581 │
└─────────┴───────────────────────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.777x
inversifyCurrent vs inversifyCurrent (Resolved Value) Speedup: 1.016x
inversifyCurrent vs inversifyCurrent (Jitless) (Resolved Value) Speedup: 1.315x
inversifyCurrent vs inversify6 Speedup: 81.932x
inversifyCurrent vs inversify7 Speedup: 4.639x
inversifyCurrent vs inversify8 Speedup: 1.621x
inversifyCurrent vs awilix Speedup: 4.182x
inversifyCurrent vs NestJS Speedup: 1.160x
inversifyCurrent vs tsyringe Speedup: 3.344x
Get complex service with properties in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '77158 ± 0.68%' │ '73017 ± 491.00' │ '13301 ± 0.17%' │ '13695 ± 93' │ 12961 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '170512 ± 0.56%' │ '168086 ± 1232.0' │ '5941 ± 0.20%' │ '5949 ± 44' │ 5865 │
│ 2 │ 'inversify6' │ '5810209 ± 2.48%' │ '5553869 ± 20478' │ '174 ± 1.33%' │ '180 ± 1' │ 173 │
│ 3 │ 'inversify7' │ '362517 ± 0.86%' │ '351360 ± 2425.0' │ '2798 ± 0.26%' │ '2846 ± 20' │ 2759 │
│ 4 │ 'inversify8' │ '215746 ± 0.69%' │ '210275 ± 1443.0' │ '4716 ± 0.25%' │ '4756 ± 33' │ 4636 │
│ 5 │ 'NestJS' │ '314692 ± 1.75%' │ '282420 ± 7163.5' │ '3374 ± 0.49%' │ '3541 ± 91' │ 3178 │
└─────────┴──────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 2.239x
inversifyCurrent vs inversify6 Speedup: 76.230x
inversifyCurrent vs inversify7 Speedup: 4.754x
inversifyCurrent vs inversify8 Speedup: 2.820x
inversifyCurrent vs NestJS Speedup: 3.942x
Get complex async service in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '360375 ± 0.87%' │ '346501 ± 6252.0' │ '2829 ± 0.35%' │ '2886 ± 52' │ 2775 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '395454 ± 0.78%' │ '382127 ± 6141.0' │ '2573 ± 0.35%' │ '2617 ± 42' │ 2529 │
│ 2 │ 'inversify6' │ '5031536 ± 2.53%' │ '4738629 ± 64992' │ '203 ± 1.53%' │ '211 ± 3' │ 199 │
│ 3 │ 'inversify7' │ '704755 ± 0.70%' │ '687241 ± 5010.0' │ '1433 ± 0.39%' │ '1455 ± 11' │ 1419 │
│ 4 │ 'inversify8' │ '385008 ± 0.79%' │ '371923 ± 6256.5' │ '2645 ± 0.35%' │ '2689 ± 45' │ 2598 │
└─────────┴──────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.099x
inversifyCurrent vs inversify6 Speedup: 13.965x
inversifyCurrent vs inversify7 Speedup: 1.974x
inversifyCurrent vs inversify8 Speedup: 1.069x[ESM] Running benchmarks...
Get service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '256.67 ± 0.28%' │ '241.00 ± 9.00' │ '4034533 ± 0.01%' │ '4149378 ± 149378' │ 3896028 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '256.54 ± 0.10%' │ '241.00 ± 9.00' │ '4018421 ± 0.01%' │ '4149378 ± 149378' │ 3897988 │
│ 2 │ 'inversify6' │ '959.56 ± 0.28%' │ '882.00 ± 20.00' │ '1097050 ± 0.02%' │ '1133787 ± 25139' │ 1042144 │
│ 3 │ 'inversify7' │ '298.11 ± 0.14%' │ '281.00 ± 10.00' │ '3455149 ± 0.01%' │ '3558719 ± 131318' │ 3354514 │
│ 4 │ 'inversify8' │ '254.29 ± 0.13%' │ '241.00 ± 10.00' │ '4059484 ± 0.01%' │ '4149378 ± 165314' │ 3932565 │
│ 5 │ 'awilix' │ '238.17 ± 0.20%' │ '221.00 ± 10.00' │ '4386307 ± 0.01%' │ '4524887 ± 214450' │ 4198664 │
│ 6 │ 'NestJS' │ '332.68 ± 0.43%' │ '311.00 ± 10.00' │ '3136264 ± 0.01%' │ '3215434 ± 100169' │ 3005892 │
│ 7 │ 'tsyringe' │ '298.61 ± 0.29%' │ '280.00 ± 10.00' │ '3499637 ± 0.01%' │ '3571429 ± 132275' │ 3348899 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.004x
inversifyCurrent vs inversify6 Speedup: 3.678x
inversifyCurrent vs inversify7 Speedup: 1.168x
inversifyCurrent vs inversify8 Speedup: 0.994x
inversifyCurrent vs awilix Speedup: 0.920x
inversifyCurrent vs NestJS Speedup: 1.286x
inversifyCurrent vs tsyringe Speedup: 1.153x
Get service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '319.65 ± 1.27%' │ '301.00 ± 10.00' │ '3273698 ± 0.01%' │ '3322259 ± 114167' │ 3128374 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '334.00 ± 0.26%' │ '311.00 ± 10.00' │ '3108192 ± 0.01%' │ '3215434 ± 100169' │ 2994035 │
│ 2 │ 'inversify6' │ '5425.4 ± 0.31%' │ '5010.0 ± 91.00' │ '192823 ± 0.06%' │ '199601 ± 3693' │ 184317 │
│ 3 │ 'inversify7' │ '518.86 ± 0.34%' │ '481.00 ± 10.00' │ '2020814 ± 0.01%' │ '2079002 ± 42342' │ 1927295 │
│ 4 │ 'inversify8' │ '304.84 ± 0.25%' │ '290.00 ± 9.00' │ '3410043 ± 0.01%' │ '3448276 ± 110443' │ 3280367 │
│ 5 │ 'awilix' │ '436.79 ± 0.28%' │ '411.00 ± 10.00' │ '2372650 ± 0.01%' │ '2433090 ± 60676' │ 2289456 │
│ 6 │ 'NestJS' │ '10701 ± 1.97%' │ '9197.0 ± 240.00' │ '103582 ± 0.10%' │ '108731 ± 2913' │ 93451 │
│ 7 │ 'tsyringe' │ '457.57 ± 0.12%' │ '431.00 ± 10.00' │ '2255466 ± 0.01%' │ '2320186 ± 55111' │ 2185474 │
└─────────┴──────────────────────────────┴──────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.053x
inversifyCurrent vs inversify6 Speedup: 16.978x
inversifyCurrent vs inversify7 Speedup: 1.620x
inversifyCurrent vs inversify8 Speedup: 0.960x
inversifyCurrent vs awilix Speedup: 1.380x
inversifyCurrent vs NestJS Speedup: 31.605x
inversifyCurrent vs tsyringe Speedup: 1.451x
Get wide service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '592.54 ± 0.32%' │ '561.00 ± 10.00' │ '1746659 ± 0.01%' │ '1782531 ± 32351' │ 1687658 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '986.74 ± 0.24%' │ '942.00 ± 10.00' │ '1044875 ± 0.02%' │ '1061571 ± 11390' │ 1013436 │
│ 2 │ 'inversify6' │ '24565 ± 0.36%' │ '22893 ± 231.00' │ '42131 ± 0.12%' │ '43681 ± 445' │ 40709 │
│ 3 │ 'inversify7' │ '1400.6 ± 0.29%' │ '1332.0 ± 11.00' │ '739659 ± 0.02%' │ '750751 ± 6149' │ 713986 │
│ 4 │ 'inversify8' │ '771.32 ± 0.28%' │ '732.00 ± 10.00' │ '1342422 ± 0.01%' │ '1366120 ± 18411' │ 1296481 │
│ 5 │ 'awilix' │ '1337.9 ± 0.28%' │ '1283.0 ± 20.00' │ '766898 ± 0.02%' │ '779423 ± 12342' │ 747414 │
│ 6 │ 'NestJS' │ '24089 ± 1.11%' │ '21961 ± 371.00' │ '43978 ± 0.12%' │ '45535 ± 777' │ 41513 │
│ 7 │ 'tsyringe' │ '1368.5 ± 0.12%' │ '1322.0 ± 19.00' │ '747266 ± 0.02%' │ '756430 ± 11030' │ 730753 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.672x
inversifyCurrent vs inversify6 Speedup: 41.458x
inversifyCurrent vs inversify7 Speedup: 2.361x
inversifyCurrent vs inversify8 Speedup: 1.301x
inversifyCurrent vs awilix Speedup: 2.278x
inversifyCurrent vs NestJS Speedup: 39.717x
inversifyCurrent vs tsyringe Speedup: 2.337x
Get complex service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '269.88 ± 0.23%' │ '260.00 ± 10.00' │ '3817149 ± 0.01%' │ '3846154 ± 142450' │ 3705292 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '267.11 ± 0.11%' │ '251.00 ± 9.00' │ '3861908 ± 0.01%' │ '3984064 ± 137910' │ 3743776 │
│ 2 │ 'inversify6' │ '953.05 ± 1.67%' │ '882.00 ± 20.00' │ '1102644 ± 0.02%' │ '1133787 ± 25139' │ 1049260 │
│ 3 │ 'inversify7' │ '299.31 ± 0.16%' │ '281.00 ± 10.00' │ '3469530 ± 0.01%' │ '3558719 ± 131318' │ 3341033 │
│ 4 │ 'inversify8' │ '264.34 ± 0.18%' │ '250.00 ± 10.00' │ '3934474 ± 0.01%' │ '4000000 ± 153846' │ 3783023 │
│ 5 │ 'awilix' │ '264.25 ± 0.22%' │ '250.00 ± 10.00' │ '3922280 ± 0.01%' │ '4000000 ± 166666' │ 3784341 │
│ 6 │ 'NestJS' │ '327.30 ± 0.16%' │ '310.00 ± 10.00' │ '3152239 ± 0.01%' │ '3225806 ± 107527' │ 3055314 │
│ 7 │ 'tsyringe' │ '315.43 ± 0.25%' │ '300.00 ± 10.00' │ '3295611 ± 0.01%' │ '3333333 ± 114943' │ 3170309 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 0.988x
inversifyCurrent vs inversify6 Speedup: 3.462x
inversifyCurrent vs inversify7 Speedup: 1.100x
inversifyCurrent vs inversify8 Speedup: 0.970x
inversifyCurrent vs awilix Speedup: 0.973x
inversifyCurrent vs NestJS Speedup: 1.211x
inversifyCurrent vs tsyringe Speedup: 1.158x
Get complex service in transient scope
┌─────────┬───────────────────────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼───────────────────────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '66165 ± 0.56%' │ '63239 ± 611.00' │ '15418 ± 0.14%' │ '15813 ± 154' │ 15114 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '119261 ± 0.36%' │ '117320 ± 3116.0' │ '8463 ± 0.14%' │ '8524 ± 229' │ 8385 │
│ 2 │ 'inversifyCurrent (Resolved Value)' │ '67091 ± 0.53%' │ '63869 ± 572.00' │ '15227 ± 0.15%' │ '15657 ± 141' │ 14906 │
│ 3 │ 'inversifyCurrent (Jitless) (Resolved Value)' │ '92218 ± 0.45%' │ '89939 ± 1092.0' │ '10998 ± 0.15%' │ '11119 ± 136' │ 10844 │
│ 4 │ 'inversify6' │ '4980263 ± 2.60%' │ '4702060 ± 23665' │ '205 ± 1.45%' │ '213 ± 1' │ 201 │
│ 5 │ 'inversify7' │ '232957 ± 0.41%' │ '227968 ± 1362.0' │ '4323 ± 0.17%' │ '4387 ± 26' │ 4293 │
│ 6 │ 'inversify8' │ '105872 ± 0.30%' │ '103044 ± 1333.0' │ '9517 ± 0.12%' │ '9705 ± 126' │ 9446 │
│ 7 │ 'awilix' │ '282530 ± 0.30%' │ '277450 ± 2554.5' │ '3556 ± 0.17%' │ '3604 ± 33' │ 3540 │
│ 8 │ 'NestJS' │ '77677 ± 1.37%' │ '70632 ± 1207.0' │ '13610 ± 0.21%' │ '14158 ± 243' │ 12874 │
│ 9 │ 'tsyringe' │ '221490 ± 0.35%' │ '216577 ± 1483.0' │ '4543 ± 0.16%' │ '4617 ± 32' │ 4515 │
└─────────┴───────────────────────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.822x
inversifyCurrent vs inversifyCurrent (Resolved Value) Speedup: 1.013x
inversifyCurrent vs inversifyCurrent (Jitless) (Resolved Value) Speedup: 1.402x
inversifyCurrent vs inversify6 Speedup: 75.367x
inversifyCurrent vs inversify7 Speedup: 3.567x
inversifyCurrent vs inversify8 Speedup: 1.620x
inversifyCurrent vs awilix Speedup: 4.335x
inversifyCurrent vs NestJS Speedup: 1.133x
inversifyCurrent vs tsyringe Speedup: 3.394x
Get complex service with properties in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '81414 ± 0.73%' │ '77305 ± 1482.0' │ '12583 ± 0.17%' │ '12936 ± 250' │ 12283 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '171936 ± 0.54%' │ '168828 ± 1812.0' │ '5893 ± 0.21%' │ '5923 ± 63' │ 5817 │
│ 2 │ 'inversify6' │ '5266318 ± 2.79%' │ '4988584 ± 31680' │ '193 ± 1.44%' │ '200 ± 1' │ 190 │
│ 3 │ 'inversify7' │ '272259 ± 0.61%' │ '264527 ± 2013.0' │ '3715 ± 0.22%' │ '3780 ± 29' │ 3674 │
│ 4 │ 'inversify8' │ '214722 ± 1.10%' │ '205656 ± 2404.0' │ '4769 ± 0.25%' │ '4862 ± 57' │ 4658 │
│ 5 │ 'NestJS' │ '325758 ± 1.78%' │ '285882 ± 7910.0' │ '3300 ± 0.58%' │ '3498 ± 99' │ 3074 │
└─────────┴──────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 2.135x
inversifyCurrent vs inversify6 Speedup: 65.064x
inversifyCurrent vs inversify7 Speedup: 3.387x
inversifyCurrent vs inversify8 Speedup: 2.638x
inversifyCurrent vs NestJS Speedup: 3.813x
Get complex async service in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '356114 ± 0.82%' │ '342062 ± 6462.0' │ '2862 ± 0.36%' │ '2923 ± 56' │ 2809 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '408093 ± 0.78%' │ '394641 ± 6563.0' │ '2493 ± 0.36%' │ '2534 ± 42' │ 2451 │
│ 2 │ 'inversify6' │ '4759524 ± 3.08%' │ '4416664 ± 41468' │ '216 ± 1.63%' │ '226 ± 2' │ 211 │
│ 3 │ 'inversify7' │ '634179 ± 0.79%' │ '617800 ± 6612.0' │ '1595 ± 0.39%' │ '1619 ± 17' │ 1577 │
│ 4 │ 'inversify8' │ '390438 ± 0.76%' │ '376497 ± 6602.0' │ '2607 ± 0.36%' │ '2656 ± 47' │ 2562 │
└─────────┴──────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.148x
inversifyCurrent vs inversify6 Speedup: 13.280x
inversifyCurrent vs inversify7 Speedup: 1.794x
inversifyCurrent vs inversify8 Speedup: 1.098x |
Benchmarks results:[CJS] Running benchmarks...
Get service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '279.37 ± 0.16%' │ '261.00 ± 11.00' │ '3719309 ± 0.01%' │ '3831418 ± 168582' │ 3579494 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '285.65 ± 0.14%' │ '270.00 ± 19.00' │ '3650247 ± 0.01%' │ '3703704 ± 267278' │ 3500749 │
│ 2 │ 'inversify6' │ '1182.7 ± 0.37%' │ '1111.0 ± 69.00' │ '882714 ± 0.03%' │ '900090 ± 54066' │ 845531 │
│ 3 │ 'inversify7' │ '332.45 ± 0.17%' │ '310.00 ± 20.00' │ '3153528 ± 0.02%' │ '3225806 ± 210620' │ 3007968 │
│ 4 │ 'inversify8' │ '275.09 ± 0.14%' │ '260.00 ± 11.00' │ '3789721 ± 0.01%' │ '3846154 ± 156117' │ 3635149 │
│ 5 │ 'awilix' │ '256.47 ± 0.25%' │ '240.00 ± 20.00' │ '4124592 ± 0.01%' │ '4166667 ± 358220' │ 3899076 │
│ 6 │ 'NestJS' │ '329.70 ± 0.30%' │ '310.00 ± 19.00' │ '3188893 ± 0.01%' │ '3225806 ± 204658' │ 3033035 │
│ 7 │ 'tsyringe' │ '342.87 ± 0.32%' │ '311.00 ± 20.00' │ '3088346 ± 0.02%' │ '3215434 ± 194286' │ 2916580 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.019x
inversifyCurrent vs inversify6 Speedup: 4.213x
inversifyCurrent vs inversify7 Speedup: 1.179x
inversifyCurrent vs inversify8 Speedup: 0.981x
inversifyCurrent vs awilix Speedup: 0.902x
inversifyCurrent vs NestJS Speedup: 1.166x
inversifyCurrent vs tsyringe Speedup: 1.204x
Get service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '327.52 ± 0.26%' │ '300.00 ± 19.00' │ '3220859 ± 0.02%' │ '3333333 ± 218069' │ 3053271 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '384.34 ± 0.23%' │ '361.00 ± 20.00' │ '2702109 ± 0.01%' │ '2770083 ± 145411' │ 2601894 │
│ 2 │ 'inversify6' │ '5608.0 ± 0.27%' │ '5198.0 ± 120.00' │ '185540 ± 0.06%' │ '192382 ± 4546' │ 178317 │
│ 3 │ 'inversify7' │ '604.20 ± 0.15%' │ '561.00 ± 20.00' │ '1716936 ± 0.02%' │ '1782531 ± 65898' │ 1655069 │
│ 4 │ 'inversify8' │ '341.38 ± 0.24%' │ '320.00 ± 11.00' │ '3053731 ± 0.01%' │ '3125000 ± 103852' │ 2929256 │
│ 5 │ 'awilix' │ '456.21 ± 0.34%' │ '421.00 ± 11.00' │ '2303342 ± 0.02%' │ '2375297 ± 63727' │ 2191954 │
│ 6 │ 'NestJS' │ '11324 ± 2.21%' │ '9744.0 ± 361.00' │ '97739 ± 0.10%' │ '102627 ± 3937' │ 88310 │
│ 7 │ 'tsyringe' │ '495.72 ± 0.13%' │ '451.00 ± 29.00' │ '2109568 ± 0.02%' │ '2217295 ± 133962' │ 2017280 │
└─────────┴──────────────────────────────┴──────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.192x
inversifyCurrent vs inversify6 Speedup: 17.359x
inversifyCurrent vs inversify7 Speedup: 1.876x
inversifyCurrent vs inversify8 Speedup: 1.055x
inversifyCurrent vs awilix Speedup: 1.398x
inversifyCurrent vs NestJS Speedup: 32.954x
inversifyCurrent vs tsyringe Speedup: 1.527x
Get wide service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '596.79 ± 0.35%' │ '551.00 ± 20.00' │ '1757425 ± 0.02%' │ '1814882 ± 63569' │ 1675633 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '1017.9 ± 0.29%' │ '952.00 ± 30.00' │ '1018624 ± 0.02%' │ '1050420 ± 32090' │ 982424 │
│ 2 │ 'inversify6' │ '24809 ± 0.33%' │ '23375 ± 321.00' │ '41492 ± 0.11%' │ '42781 ± 596' │ 40308 │
│ 3 │ 'inversify7' │ '1670.4 ± 0.26%' │ '1582.0 ± 40.00' │ '617563 ± 0.02%' │ '632111 ± 16397' │ 598660 │
│ 4 │ 'inversify8' │ '769.90 ± 0.28%' │ '731.00 ± 20.00' │ '1343568 ± 0.01%' │ '1367989 ± 36431' │ 1298865 │
│ 5 │ 'awilix' │ '1334.6 ± 0.15%' │ '1282.0 ± 40.00' │ '764696 ± 0.02%' │ '780031 ± 23602' │ 749311 │
│ 6 │ 'NestJS' │ '25503 ± 1.27%' │ '23125 ± 601.00' │ '41686 ± 0.12%' │ '43243 ± 1134' │ 39212 │
│ 7 │ 'tsyringe' │ '1442.0 ± 0.15%' │ '1372.0 ± 40.00' │ '712462 ± 0.02%' │ '728863 ± 21888' │ 693490 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.725x
inversifyCurrent vs inversify6 Speedup: 42.355x
inversifyCurrent vs inversify7 Speedup: 2.846x
inversifyCurrent vs inversify8 Speedup: 1.308x
inversifyCurrent vs awilix Speedup: 2.298x
inversifyCurrent vs NestJS Speedup: 42.159x
inversifyCurrent vs tsyringe Speedup: 2.467x
Get complex service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '286.41 ± 0.22%' │ '270.00 ± 19.00' │ '3635001 ± 0.01%' │ '3703704 ± 255428' │ 3491493 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '287.43 ± 0.17%' │ '270.00 ± 11.00' │ '3620689 ± 0.01%' │ '3703704 ± 144985' │ 3479167 │
│ 2 │ 'inversify6' │ '1162.2 ± 1.52%' │ '1072.0 ± 70.00' │ '908564 ± 0.03%' │ '932836 ± 64026' │ 860464 │
│ 3 │ 'inversify7' │ '346.89 ± 0.35%' │ '320.00 ± 20.00' │ '3057332 ± 0.02%' │ '3125000 ± 197259' │ 2882792 │
│ 4 │ 'inversify8' │ '287.40 ± 0.14%' │ '270.00 ± 11.00' │ '3620677 ± 0.01%' │ '3703704 ± 144985' │ 3479527 │
│ 5 │ 'awilix' │ '276.60 ± 0.16%' │ '260.00 ± 19.00' │ '3783911 ± 0.01%' │ '3846154 ± 303224' │ 3615368 │
│ 6 │ 'NestJS' │ '326.35 ± 0.18%' │ '310.00 ± 19.00' │ '3188999 ± 0.01%' │ '3225807 ± 210619' │ 3064186 │
│ 7 │ 'tsyringe' │ '355.97 ± 0.34%' │ '330.00 ± 20.00' │ '2966766 ± 0.02%' │ '3030303 ± 185131' │ 2809188 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.004x
inversifyCurrent vs inversify6 Speedup: 4.001x
inversifyCurrent vs inversify7 Speedup: 1.189x
inversifyCurrent vs inversify8 Speedup: 1.004x
inversifyCurrent vs awilix Speedup: 0.961x
inversifyCurrent vs NestJS Speedup: 1.140x
inversifyCurrent vs tsyringe Speedup: 1.225x
Get complex service in transient scope
┌─────────┬───────────────────────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼───────────────────────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '70420 ± 0.55%' │ '67591 ± 601.00' │ '14495 ± 0.14%' │ '14795 ± 132' │ 14201 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '120984 ± 0.39%' │ '118356 ± 1022.0' │ '8348 ± 0.14%' │ '8449 ± 73' │ 8266 │
│ 2 │ 'inversifyCurrent (Resolved Value)' │ '70668 ± 0.59%' │ '67961 ± 610.00' │ '14435 ± 0.14%' │ '14714 ± 131' │ 14151 │
│ 3 │ 'inversifyCurrent (Jitless) (Resolved Value)' │ '100822 ± 0.41%' │ '98787 ± 1532.0' │ '10054 ± 0.16%' │ '10123 ± 157' │ 9919 │
│ 4 │ 'inversify6' │ '4841195 ± 2.16%' │ '4646878 ± 45709' │ '209 ± 1.19%' │ '215 ± 2' │ 207 │
│ 5 │ 'inversify7' │ '299062 ± 0.68%' │ '290633 ± 1998.0' │ '3385 ± 0.24%' │ '3441 ± 24' │ 3344 │
│ 6 │ 'inversify8' │ '106602 ± 0.40%' │ '103685 ± 1092.0' │ '9490 ± 0.14%' │ '9645 ± 102' │ 9381 │
│ 7 │ 'awilix' │ '278410 ± 0.34%' │ '272471 ± 2268.5' │ '3612 ± 0.18%' │ '3670 ± 31' │ 3592 │
│ 8 │ 'NestJS' │ '82220 ± 1.70%' │ '73730 ± 1542.0' │ '12981 ± 0.22%' │ '13563 ± 285' │ 12163 │
│ 9 │ 'tsyringe' │ '221662 ± 0.43%' │ '215847 ± 1977.5' │ '4553 ± 0.20%' │ '4633 ± 43' │ 4512 │
└─────────┴───────────────────────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.736x
inversifyCurrent vs inversifyCurrent (Resolved Value) Speedup: 1.004x
inversifyCurrent vs inversifyCurrent (Jitless) (Resolved Value) Speedup: 1.442x
inversifyCurrent vs inversify6 Speedup: 69.268x
inversifyCurrent vs inversify7 Speedup: 4.282x
inversifyCurrent vs inversify8 Speedup: 1.527x
inversifyCurrent vs awilix Speedup: 4.013x
inversifyCurrent vs NestJS Speedup: 1.117x
inversifyCurrent vs tsyringe Speedup: 3.183x
Get complex service with properties in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '84276 ± 0.77%' │ '80359 ± 632.00' │ '12154 ± 0.16%' │ '12444 ± 98' │ 11866 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '163560 ± 0.56%' │ '159588 ± 2113.0' │ '6199 ± 0.19%' │ '6266 ± 83' │ 6114 │
│ 2 │ 'inversify6' │ '5286973 ± 2.31%' │ '5053660 ± 64927' │ '192 ± 1.32%' │ '198 ± 3' │ 190 │
│ 3 │ 'inversify7' │ '348547 ± 0.90%' │ '337022 ± 2944.0' │ '2917 ± 0.29%' │ '2967 ± 26' │ 2870 │
│ 4 │ 'inversify8' │ '223189 ± 0.69%' │ '218866 ± 3945.0' │ '4561 ± 0.27%' │ '4569 ± 82' │ 4481 │
│ 5 │ 'NestJS' │ '341558 ± 1.97%' │ '304374 ± 7962.0' │ '3124 ± 0.54%' │ '3285 ± 88' │ 2928 │
└─────────┴──────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.961x
inversifyCurrent vs inversify6 Speedup: 63.356x
inversifyCurrent vs inversify7 Speedup: 4.166x
inversifyCurrent vs inversify8 Speedup: 2.664x
inversifyCurrent vs NestJS Speedup: 3.891x
Get complex async service in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬────────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼────────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '350928 ± 0.85%' │ '336181 ± 7091.0' │ '2907 ± 0.35%' │ '2975 ± 63' │ 2850 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '401385 ± 0.80%' │ '387247 ± 7706.5' │ '2537 ± 0.36%' │ '2582 ± 52' │ 2492 │
│ 2 │ 'inversify6' │ '5271473 ± 4.73%' │ '4725512 ± 165813' │ '199 ± 2.24%' │ '212 ± 8' │ 190 │
│ 3 │ 'inversify7' │ '706304 ± 0.96%' │ '677756 ± 7691.5' │ '1439 ± 0.50%' │ '1475 ± 17' │ 1416 │
│ 4 │ 'inversify8' │ '380379 ± 0.79%' │ '366226 ± 7091.0' │ '2678 ± 0.36%' │ '2731 ± 53' │ 2629 │
└─────────┴──────────────────────────────┴───────────────────┴────────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.145x
inversifyCurrent vs inversify6 Speedup: 14.587x
inversifyCurrent vs inversify7 Speedup: 2.019x
inversifyCurrent vs inversify8 Speedup: 1.085x[ESM] Running benchmarks...
Get service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '260.80 ± 0.21%' │ '241.00 ± 11.00' │ '3998294 ± 0.01%' │ '4149378 ± 198448' │ 3834364 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '249.17 ± 0.12%' │ '230.00 ± 10.00' │ '4192429 ± 0.01%' │ '4347826 ± 197628' │ 4013299 │
│ 2 │ 'inversify6' │ '1012.4 ± 0.32%' │ '921.00 ± 50.00' │ '1043768 ± 0.03%' │ '1085776 ± 62329' │ 987760 │
│ 3 │ 'inversify7' │ '321.31 ± 0.23%' │ '290.00 ± 20.00' │ '3333139 ± 0.02%' │ '3448276 ± 241761' │ 3112247 │
│ 4 │ 'inversify8' │ '273.54 ± 0.16%' │ '251.00 ± 11.00' │ '3816680 ± 0.01%' │ '3984064 ± 182603' │ 3655741 │
│ 5 │ 'awilix' │ '244.12 ± 0.29%' │ '220.00 ± 10.00' │ '4360312 ± 0.01%' │ '4545455 ± 216450' │ 4096349 │
│ 6 │ 'NestJS' │ '329.78 ± 0.32%' │ '301.00 ± 11.00' │ '3187971 ± 0.01%' │ '3322259 ± 126017' │ 3032316 │
│ 7 │ 'tsyringe' │ '312.03 ± 0.35%' │ '281.00 ± 19.00' │ '3412437 ± 0.02%' │ '3558719 ± 225386' │ 3204844 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 0.954x
inversifyCurrent vs inversify6 Speedup: 3.831x
inversifyCurrent vs inversify7 Speedup: 1.200x
inversifyCurrent vs inversify8 Speedup: 1.048x
inversifyCurrent vs awilix Speedup: 0.917x
inversifyCurrent vs NestJS Speedup: 1.254x
inversifyCurrent vs tsyringe Speedup: 1.172x
Get service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '317.14 ± 1.32%' │ '290.00 ± 11.00' │ '3351693 ± 0.01%' │ '3448276 ± 126017' │ 3153201 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '370.33 ± 0.26%' │ '341.00 ± 11.00' │ '2808371 ± 0.01%' │ '2932551 ± 97752' │ 2700278 │
│ 2 │ 'inversify6' │ '5535.6 ± 0.32%' │ '5138.0 ± 130.00' │ '188098 ± 0.06%' │ '194628 ± 5052' │ 180649 │
│ 3 │ 'inversify7' │ '516.18 ± 0.34%' │ '471.00 ± 21.00' │ '2047314 ± 0.02%' │ '2123142 ± 99080' │ 1937318 │
│ 4 │ 'inversify8' │ '341.34 ± 0.26%' │ '311.00 ± 11.00' │ '3071812 ± 0.01%' │ '3215434 ± 117899' │ 2929603 │
│ 5 │ 'awilix' │ '461.98 ± 0.35%' │ '421.00 ± 20.00' │ '2280247 ± 0.02%' │ '2375297 ± 118469' │ 2164592 │
│ 6 │ 'NestJS' │ '11379 ± 2.22%' │ '9814.0 ± 380.00' │ '97389 ± 0.09%' │ '101895 ± 3992' │ 87978 │
│ 7 │ 'tsyringe' │ '450.43 ± 0.13%' │ '420.00 ± 20.00' │ '2321871 ± 0.02%' │ '2380952 ± 113379' │ 2220104 │
└─────────┴──────────────────────────────┴──────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.193x
inversifyCurrent vs inversify6 Speedup: 17.819x
inversifyCurrent vs inversify7 Speedup: 1.637x
inversifyCurrent vs inversify8 Speedup: 1.091x
inversifyCurrent vs awilix Speedup: 1.470x
inversifyCurrent vs NestJS Speedup: 34.416x
inversifyCurrent vs tsyringe Speedup: 1.444x
Get wide service in transient scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '619.47 ± 0.41%' │ '570.00 ± 19.00' │ '1721328 ± 0.02%' │ '1754386 ± 60496' │ 1614278 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '995.36 ± 0.27%' │ '941.00 ± 30.00' │ '1038193 ± 0.02%' │ '1062699 ± 33893' │ 1004667 │
│ 2 │ 'inversify6' │ '24511 ± 0.41%' │ '22794 ± 321.00' │ '42356 ± 0.12%' │ '43871 ± 625' │ 40799 │
│ 3 │ 'inversify7' │ '1363.8 ± 0.31%' │ '1282.0 ± 30.00' │ '762114 ± 0.02%' │ '780031 ± 18691' │ 733237 │
│ 4 │ 'inversify8' │ '770.91 ± 0.29%' │ '731.00 ± 19.00' │ '1343132 ± 0.01%' │ '1367989 ± 36431' │ 1297173 │
│ 5 │ 'awilix' │ '1310.6 ± 0.24%' │ '1222.0 ± 30.00' │ '798557 ± 0.02%' │ '818331 ± 20596' │ 763001 │
│ 6 │ 'NestJS' │ '25413 ± 1.31%' │ '23064 ± 591.00' │ '41866 ± 0.12%' │ '43358 ± 1118' │ 39350 │
│ 7 │ 'tsyringe' │ '1377.7 ± 0.16%' │ '1312.0 ± 30.00' │ '744481 ± 0.02%' │ '762195 ± 17039' │ 725829 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.658x
inversifyCurrent vs inversify6 Speedup: 40.639x
inversifyCurrent vs inversify7 Speedup: 2.259x
inversifyCurrent vs inversify8 Speedup: 1.282x
inversifyCurrent vs awilix Speedup: 2.156x
inversifyCurrent vs NestJS Speedup: 41.115x
inversifyCurrent vs tsyringe Speedup: 2.312x
Get complex service in singleton scope
┌─────────┬──────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '296.21 ± 0.28%' │ '270.00 ± 10.00' │ '3593321 ± 0.01%' │ '3703704 ± 142450' │ 3375967 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '287.29 ± 0.17%' │ '261.00 ± 11.00' │ '3646354 ± 0.01%' │ '3831418 ± 168582' │ 3480831 │
│ 2 │ 'inversify6' │ '1012.6 ± 2.00%' │ '921.00 ± 70.00' │ '1056946 ± 0.03%' │ '1085776 ± 87933' │ 987561 │
│ 3 │ 'inversify7' │ '311.96 ± 0.17%' │ '280.00 ± 19.00' │ '3398262 ± 0.02%' │ '3571428 ± 249169' │ 3205505 │
│ 4 │ 'inversify8' │ '283.20 ± 0.14%' │ '261.00 ± 11.00' │ '3675516 ± 0.01%' │ '3831418 ± 168583' │ 3531077 │
│ 5 │ 'awilix' │ '271.83 ± 0.13%' │ '250.00 ± 10.00' │ '3852448 ± 0.01%' │ '4000000 ± 166667' │ 3678804 │
│ 6 │ 'NestJS' │ '331.12 ± 0.17%' │ '310.00 ± 19.00' │ '3150625 ± 0.01%' │ '3225807 ± 204659' │ 3020084 │
│ 7 │ 'tsyringe' │ '317.77 ± 0.40%' │ '290.00 ± 19.00' │ '3352373 ± 0.01%' │ '3448276 ± 222469' │ 3146958 │
└─────────┴──────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 0.985x
inversifyCurrent vs inversify6 Speedup: 3.400x
inversifyCurrent vs inversify7 Speedup: 1.057x
inversifyCurrent vs inversify8 Speedup: 0.978x
inversifyCurrent vs awilix Speedup: 0.933x
inversifyCurrent vs NestJS Speedup: 1.141x
inversifyCurrent vs tsyringe Speedup: 1.072x
Get complex service in transient scope
┌─────────┬───────────────────────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼───────────────────────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '70197 ± 0.63%' │ '66920 ± 720.00' │ '14621 ± 0.15%' │ '14943 ± 160' │ 14246 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '121620 ± 0.38%' │ '118677 ± 962.00' │ '8302 ± 0.14%' │ '8426 ± 69' │ 8223 │
│ 2 │ 'inversifyCurrent (Resolved Value)' │ '70002 ± 0.58%' │ '67191 ± 630.00' │ '14594 ± 0.14%' │ '14883 ± 139' │ 14286 │
│ 3 │ 'inversifyCurrent (Jitless) (Resolved Value)' │ '96825 ± 0.49%' │ '93905 ± 1787.0' │ '10487 ± 0.15%' │ '10649 ± 204' │ 10328 │
│ 4 │ 'inversify6' │ '5029868 ± 2.83%' │ '4746027 ± 45888' │ '203 ± 1.51%' │ '211 ± 2' │ 199 │
│ 5 │ 'inversify7' │ '221387 ± 0.51%' │ '215051 ± 1482.0' │ '4566 ± 0.20%' │ '4650 ± 32' │ 4517 │
│ 6 │ 'inversify8' │ '112415 ± 0.60%' │ '106819 ± 1733.0' │ '9153 ± 0.22%' │ '9362 ± 152' │ 8896 │
│ 7 │ 'awilix' │ '284896 ± 0.34%' │ '279547 ± 3475.0' │ '3530 ± 0.19%' │ '3577 ± 45' │ 3511 │
│ 8 │ 'NestJS' │ '82181 ± 1.63%' │ '73930 ± 1622.0' │ '12950 ± 0.22%' │ '13526 ± 300' │ 12169 │
│ 9 │ 'tsyringe' │ '225975 ± 0.39%' │ '220209 ± 1683.0' │ '4460 ± 0.19%' │ '4541 ± 35' │ 4426 │
└─────────┴───────────────────────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.761x
inversifyCurrent vs inversifyCurrent (Resolved Value) Speedup: 1.002x
inversifyCurrent vs inversifyCurrent (Jitless) (Resolved Value) Speedup: 1.394x
inversifyCurrent vs inversify6 Speedup: 72.026x
inversifyCurrent vs inversify7 Speedup: 3.202x
inversifyCurrent vs inversify8 Speedup: 1.597x
inversifyCurrent vs awilix Speedup: 4.142x
inversifyCurrent vs NestJS Speedup: 1.129x
inversifyCurrent vs tsyringe Speedup: 3.278x
Get complex service with properties in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '81899 ± 0.68%' │ '77605 ± 570.00' │ '12532 ± 0.18%' │ '12886 ± 95' │ 12211 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '161019 ± 0.84%' │ '151136 ± 1052.0' │ '6428 ± 0.28%' │ '6617 ± 46' │ 6212 │
│ 2 │ 'inversify6' │ '5329678 ± 3.27%' │ '4997143 ± 41973' │ '192 ± 1.63%' │ '200 ± 2' │ 188 │
│ 3 │ 'inversify7' │ '261598 ± 0.62%' │ '253678 ± 2063.0' │ '3868 ± 0.23%' │ '3942 ± 32' │ 3823 │
│ 4 │ 'inversify8' │ '219816 ± 0.69%' │ '212837 ± 4427.5' │ '4637 ± 0.28%' │ '4698 ± 98' │ 4550 │
│ 5 │ 'NestJS' │ '338088 ± 1.99%' │ '301400 ± 7932.0' │ '3171 ± 0.54%' │ '3318 ± 89' │ 2963 │
└─────────┴──────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.950x
inversifyCurrent vs inversify6 Speedup: 65.200x
inversifyCurrent vs inversify7 Speedup: 3.240x
inversifyCurrent vs inversify8 Speedup: 2.702x
inversifyCurrent vs NestJS Speedup: 3.952x
Get complex async service in transient scope
┌─────────┬──────────────────────────────┬───────────────────┬───────────────────┬────────────────────────┬────────────────────────┬─────────┐
│ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
├─────────┼──────────────────────────────┼───────────────────┼───────────────────┼────────────────────────┼────────────────────────┼─────────┤
│ 0 │ 'inversifyCurrent' │ '343501 ± 0.83%' │ '328069 ± 7882.5' │ '2974 ± 0.37%' │ '3048 ± 74' │ 2912 │
│ 1 │ 'inversifyCurrent (Jitless)' │ '386949 ± 0.76%' │ '373647 ± 7822.0' │ '2629 ± 0.35%' │ '2676 ± 56' │ 2585 │
│ 2 │ 'inversify6' │ '4886760 ± 3.06%' │ '4509454 ± 71637' │ '210 ± 1.78%' │ '222 ± 4' │ 205 │
│ 3 │ 'inversify7' │ '619326 ± 0.83%' │ '599183 ± 7261.0' │ '1637 ± 0.43%' │ '1669 ± 20' │ 1615 │
│ 4 │ 'inversify8' │ '367545 ± 0.84%' │ '352986 ± 10445' │ '2779 ± 0.37%' │ '2833 ± 85' │ 2721 │
└─────────┴──────────────────────────────┴───────────────────┴───────────────────┴────────────────────────┴────────────────────────┴─────────┘
inversifyCurrent vs inversifyCurrent (Jitless) Speedup: 1.131x
inversifyCurrent vs inversify6 Speedup: 14.140x
inversifyCurrent vs inversify7 Speedup: 1.816x
inversifyCurrent vs inversify8 Speedup: 1.070x |
toResolvedValuebindings always built resolvers vianew Function(...), ignoring thejitlesscontainer option. Under--disallow-code-generation-from-strings, this throwsEvalError:Instance bindings already respect
jitless(#1996); resolved value bindings were missed.Changes
Function:buildZeroResolvedValueArgumentsResolverOnCspbuildOneResolvedValueArgumentResolverOnCspbuildResolvedValueArgumentsResolverOnCsp(2–4 args)buildResolvedValueBindingNodeResolvernow takesjitEnabledand dispatches to the JIT or CSP builder per binding arity.jitEnabledfromBasePlanParamsthroughcurryBuildServiceNodeBindings→ResolvedValueBindingNodeImplementation, matching the existing instance-binding wiring.Summary by CodeRabbit
Bug Fixes
jitlesssetting.Tests