Skip to content

Conversation

marcj
Copy link
Owner

@marcj marcj commented Apr 2, 2025

Summary of changes

I decided to split the work and first publish faster injector before continuing with #640.

Relinquishment of Rights

Please mark following checkbox to confirm that you relinquish all rights of your changes:

  • I waive and relinquish all rights regarding this changes (including code, text, and images) to Deepkit UG (limited), Germany. This changes (including code, text, and images) are under MIT license without name attribution, copyright notice, and permission notice requirement.

marcj added 9 commits March 15, 2025 01:14
…ment

deepkit/injector was rewritten in its core. We have a lot of performance improvements:

2-4x improvement for very small containers (with less than 5 providers)
300x improvement (and more) for bigger containers with like 1000-2000 providers. the old version used a big switch-case, the new one direct references
In general getting the reference to the DI factory directly allows to get the most performance increase. Doing it like this

```
const resolveService = injector.resolve(Service);

const service  = resolveService(); // direct reference to JIT factory
```

makes resolving dependencies very fast. By assigning the factory function now directly into dependency resolution makes the whole container almost optimal in performance. Currently, it hovers around 100mio ops/s, which is nearly identical to doing return `instance ||= new Service()`;
this allows to set a log level for a particular scope, for example allows to enable debug for a particular scope (or disable debug for a particular scope)
also remove unnecessary sizer call and export more symbols
@marcj marcj merged commit 290b50b into master Apr 2, 2025
9 of 11 checks passed
@marcj marcj deleted the feat/injector branch August 25, 2025 13:12
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.

1 participant