This release brings in major performance improvements for the Laminas\ServiceManager\ServiceManager#has() API, which is both used internally and externally, and at the core of many laminas/* components.
The rough improvements range between 30% and 80% depending on the state of initialization of your ServiceManager instance.
❯ ./vendor/bin/phpbench run --ref=before_93
PHPBench (1.0.4) running benchmarks...
with configuration file: /home/ocramius/Documents/laminas/laminas-servicemanager/phpbench.json
with PHP version 8.0.8, xdebug ❌, opcache ✔
comparing [actual vs. before_93]
\LaminasBench\ServiceManager\HasNewServicesBench
benchHasFactory1........................R1 I7 - [Mo0.203μs vs. Mo0.925μs] -78.09% (±2.08%)
benchHasInvokable1......................R9 I9 - [Mo0.277μs vs. Mo1.068μs] -74.10% (±2.14%)
benchHasService1........................R1 I6 - [Mo0.184μs vs. Mo0.894μs] -79.37% (±1.18%)
benchFetchFactoryAlias1.................R1 I9 - [Mo0.274μs vs. Mo1.062μs] -74.18% (±0.57%)
benchHasRecursiveFactoryAlias1..........R1 I5 - [Mo0.275μs vs. Mo1.067μs] -74.25% (±1.51%)
benchFetchRecursiveFactoryAlias2........R1 I9 - [Mo0.274μs vs. Mo1.061μs] -74.22% (±1.51%)
benchFetchAbstractFactoryFoo............R1 I9 - [Mo0.315μs vs. Mo1.212μs] -74.01% (±1.71%)
benchNonExistingService.................R1 I5 - [Mo0.346μs vs. Mo1.278μs] -72.90% (±1.72%)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps laminas/laminas-servicemanager from 3.6.4 to 3.7.0.
Release notes
Sourced from laminas/laminas-servicemanager's releases.
... (truncated)
Changelog
Sourced from laminas/laminas-servicemanager's changelog.
Commits
2b0aee4
Merge pull request #91 from gsteel/docs/delegators-and-aliasesde134d3
Applied minor CS fixes013d26f
Add an example of working delegation to illustrate how delegation can occur...9759a69
Use FQCN for Invokable factory in examples872e254
Fix MD007/ul-indent211d1eb
Fix MD010/no-hard-tabs2077bc7
Adds a test case that illustrates the behaviour of delegators with regard to ...76e4d61
WRT #90 Updates the delegator documentation so that the behavior of delegator...8032bc5
Merge pull request #93 from koenkivits/fix/has-performancee33e5d6
Merge pull request #95 from laminas/feature/upgrade-phpbenchDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)