This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Nicolas Grekas 8375eeef67 bug #38882 [DependencyInjection] Improve performances in CircualReference detection (jderusse)
This PR was merged into the 4.4 branch.

Discussion
----------

[DependencyInjection] Improve performances in CircualReference detection

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37850
| License       | MIT
| Doc PR        | -

This PR change the way circular references are detected.  And improve the project submitted in #37850 [by **86%**](https://blackfire.io/profiles/compare/cc4aa41d-5b63-4caa-9a1b-fc282dc5d64a/graph) (Build the container in 1.1 sec instead of 10)

Issue is: When a project contains a lot Circular Reference, the Dumper [spend a lot of time](https://blackfire.io/profiles/54f6eba2-b93c-4f2b-a268-1e58883faecb/graph) in merging those circular references.
note: a circular reference is not an issue when an service is not injected by constructor, but this Can not be known until all references are resolved (performed previously by connectCircularReferences)

This PR removed the connectCircularReferences and generate a flatten tree of dependencies:
 - the key is the service ID
 - the value is the list of direct **AND** indirect dependency + path to join the dependency

I also [benched the PR with a project with few references](https://blackfire.io/profiles/compare/2f9902e6-3347-40b3-8421-e1fd09c067d2/graph) and result are almost the same before/after.

Commits
-------

d4db75692b Improve performances in CircualReference detection
2020-11-02 16:10:49 +01:00
.github Merge branch '3.4' into 4.4 2020-11-02 15:31:22 +01:00
src/Symfony bug #38882 [DependencyInjection] Improve performances in CircualReference detection (jderusse) 2020-11-02 16:10:49 +01:00
.appveyor.yml Merge branch '3.4' into 4.4 2020-11-02 15:31:22 +01:00
.editorconfig Update .editorconfig 2018-09-06 16:22:56 +02:00
.gitignore Run the phpunit-bridge from a PR 2019-08-02 17:46:19 +02:00
.php_cs.dist Use short array deconstruction syntax. 2020-10-28 21:42:29 +01:00
.travis.yml Merge branch '3.4' into 4.4 2020-11-02 15:31:22 +01:00
CHANGELOG-4.0.md Merge branch '3.4' into 4.1 2018-08-01 18:22:14 +02:00
CHANGELOG-4.1.md updated CHANGELOG for 4.1.10 2019-01-06 17:16:07 +01:00
CHANGELOG-4.2.md updated CHANGELOG for 4.2.10 2019-06-26 16:19:37 +02:00
CHANGELOG-4.3.md updated CHANGELOG for 4.3.10 2020-01-21 14:13:32 +01:00
CHANGELOG-4.4.md Update CHANGELOG for 4.4.16 2020-10-28 06:50:47 +01:00
CODE_OF_CONDUCT.md Added the Code of Conduct file 2018-10-10 03:13:30 -07:00
composer.json Remove dependency on doctrine/reflection 2020-10-28 19:09:12 +01:00
CONTRIBUTING.md Mention the community review guide 2016-12-18 22:02:35 +01:00
CONTRIBUTORS.md Update CONTRIBUTORS for 3.4.46 2020-10-28 06:38:46 +01:00
LICENSE Update year in license files 2020-01-01 12:03:25 +01:00
link Merge branch '3.4' into 4.4 2020-08-26 10:30:46 +02:00
phpunit Simplify phpunit script. 2020-10-28 21:38:43 +01:00
phpunit.xml.dist [Cache] Add optimized FileSystem & Redis TagAware Adapters 2019-04-24 07:47:35 +02:00
README.md Minor improvement 2020-07-29 07:57:47 +02:00
UPGRADE-4.0.md Merge branch '3.4' into 4.3 2019-11-16 10:07:40 +01:00
UPGRADE-4.1.md Merge branch '4.0' into 4.1 2018-05-31 12:17:53 +02:00
UPGRADE-4.2.md Merge branch '3.4' into 4.3 2020-01-08 18:19:22 +01:00
UPGRADE-4.3.md Merge branch '4.3' into 4.4 2019-11-19 13:20:06 +01:00
UPGRADE-4.4.md Reference the correct interface in the RegistryInterface deprecation in upgrade notes 2020-10-15 20:55:38 +02:00
UPGRADE-5.0.md Update UPGRADE-5.0.md 2020-07-30 10:43:32 +02:00

Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Symfony is used by thousands of web applications (including BlaBlaCar.com and Spotify.com) and most of the popular PHP projects (including Drupal and Magento).

Installation

Documentation

Community

Contributing

Symfony is an Open Source, community-driven project with thousands of contributors. Join them contributing code or contributing documentation.

Security Issues

If you discover a security vulnerability within Symfony, please follow our disclosure procedure.

About Us

Symfony development is sponsored by SensioLabs, led by the Symfony Core Team and supported by Symfony contributors.