Skip to content

Fix jitless flag being ignored by resolved value binding resolvers#2000

Merged
notaphplover merged 11 commits into
mainfrom
copilot/fix-jitless-flag-issue
Jul 16, 2026
Merged

Fix jitless flag being ignored by resolved value binding resolvers#2000
notaphplover merged 11 commits into
mainfrom
copilot/fix-jitless-flag-issue

Conversation

Copilot AI commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

toResolvedValue bindings always built resolvers via new Function(...), ignoring the jitless container option. Under --disallow-code-generation-from-strings, this throws EvalError:

const container = new Container({ jitless: true });
container.bind('a').toResolvedValue(() => 'a');
container.get('a'); // EvalError: Code generation from strings disallowed for this context

Instance bindings already respect jitless (#1996); resolved value bindings were missed.

Changes

  • New CSP-safe resolver builders, mirroring the JIT variants but using plain closures instead of Function:
    • buildZeroResolvedValueArgumentsResolverOnCsp
    • buildOneResolvedValueArgumentResolverOnCsp
    • buildResolvedValueArgumentsResolverOnCsp (2–4 args)
    • (5+ args already went through a codegen-free path, no change needed there)
  • buildResolvedValueBindingNodeResolver now takes jitEnabled and dispatches to the JIT or CSP builder per binding arity.
  • Threaded jitEnabled from BasePlanParams through curryBuildServiceNodeBindingsResolvedValueBindingNodeImplementation, matching the existing instance-binding wiring.
  • Added unit tests for the three new resolver modules and a changeset.

Summary by CodeRabbit

  • Bug Fixes

    • Resolved-value bindings now respect the jitless setting.
    • Improved compatibility with strict Content Security Policy environments by avoiding dynamic code generation during resolution.
    • Synchronous and asynchronous resolved-value arguments are now handled correctly across supported argument counts.
  • Tests

    • Added coverage for zero, single, and multiple resolved-value arguments in synchronous and asynchronous scenarios.

@changeset-bot

changeset-bot Bot commented Jul 16, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 7175426

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 4 packages
Name Type
@inversifyjs/core Patch
inversify Patch
@inversifyjs/container Patch
@inversifyjs/plugin-dispose Patch

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

Copilot AI changed the title [WIP] Fix issue with jitless flag being ignored by resolvers Fix jitless flag being ignored by resolved value binding resolvers Jul 16, 2026
Copilot AI requested a review from notaphplover July 16, 2026 17:44
@notaphplover
notaphplover marked this pull request as ready for review July 16, 2026 17:47
@notaphplover

Copy link
Copy Markdown
Member

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Resolved-value binding resolution now propagates jitEnabled and selects CSP-safe closures when disabled. New zero-, one-, and multi-argument resolver builders handle synchronous and asynchronous values, with tests covering each path.

Changes

Resolved-value JITless resolution

Layer / File(s) Summary
CSP-safe resolver builders and coverage
packages/container/libraries/core/src/planning/calculations/build*OnCsp.ts, packages/container/libraries/core/src/planning/calculations/build*OnCsp.spec.ts
Adds closure-based resolvers for zero, one, and multiple arguments, including synchronous and asynchronous resolution tests.
JIT-aware resolver selection
packages/container/libraries/core/src/planning/calculations/buildResolvedValueBindingNodeResolver.ts
Dispatches between existing JIT builders and CSP-safe builders for zero through four arguments based on jitEnabled.
Node construction and release metadata
packages/container/libraries/core/src/planning/models/ResolvedValueBindingNodeImplementation.ts, packages/container/libraries/core/src/planning/actions/curryBuildServiceNodeBindings.ts, .changeset/fix-resolved-value-jitless.md
Passes jitEnabled into resolved-value node construction and records patch releases for the affected packages.

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
Loading

Possibly related PRs

Suggested reviewers: notaphplover

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 40.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: resolved value binding resolvers now honor the jitless flag.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch copilot/fix-jitless-flag-issue

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
packages/container/libraries/core/src/planning/calculations/buildResolvedValueBindingNodeResolver.ts (1)

59-122: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add coverage for the jitEnabled dispatch 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: false resolves toResolvedValue without invoking the Function constructor, while true retains 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

📥 Commits

Reviewing files that changed from the base of the PR and between 161c5c5 and 35c49a0.

📒 Files selected for processing (10)
  • .changeset/fix-resolved-value-jitless.md
  • packages/container/libraries/core/src/planning/actions/curryBuildServiceNodeBindings.ts
  • packages/container/libraries/core/src/planning/calculations/buildOneResolvedValueArgumentResolverOnCsp.spec.ts
  • packages/container/libraries/core/src/planning/calculations/buildOneResolvedValueArgumentResolverOnCsp.ts
  • packages/container/libraries/core/src/planning/calculations/buildResolvedValueArgumentsResolverOnCsp.spec.ts
  • packages/container/libraries/core/src/planning/calculations/buildResolvedValueArgumentsResolverOnCsp.ts
  • packages/container/libraries/core/src/planning/calculations/buildResolvedValueBindingNodeResolver.ts
  • packages/container/libraries/core/src/planning/calculations/buildZeroResolvedValueArgumentsResolverOnCsp.spec.ts
  • packages/container/libraries/core/src/planning/calculations/buildZeroResolvedValueArgumentsResolverOnCsp.ts
  • packages/container/libraries/core/src/planning/models/ResolvedValueBindingNodeImplementation.ts

@github-actions

Copy link
Copy Markdown
Contributor

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

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Caution

Review failed

An error occurred during the review process. Please try again later.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch copilot/fix-jitless-flag-issue

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

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

@notaphplover
notaphplover merged commit a3b17ad into main Jul 16, 2026
11 checks passed
@notaphplover
notaphplover deleted the copilot/fix-jitless-flag-issue branch July 16, 2026 23:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: The jitless flag is being ignored by some resolvers

2 participants