Skip to content
This repository has been archived by the owner on Jan 8, 2020. It is now read-only.

DI definition list optimisation - Cache classes upfront where possible to reduce iterations #6747

Conversation

nickpeirson
Copy link
Contributor

Definition lists are currently expensive with multiple definitions as they iterate over all of the definitions, often multiple times. The attached changes store which classes a definition knows about up front and looks them up via an array key in, iirc, constant time.

In some cases it may be possible that the lookup from the array isn't complete, e.g. in the case of getting a PartialMarker, in which case it falls back to iterating. It also takes into account the possibility of classes existing in RuntimeDefinitions which won't know upfront which classes it can handle.

This has made a significant impact to time spent in Di for our requests.

@weierophinney weierophinney added this to the 2.4.0 milestone Feb 19, 2015
@weierophinney weierophinney merged commit e5c7074 into zendframework:develop Feb 23, 2015
weierophinney added a commit that referenced this pull request Feb 23, 2015
DI definition list optimisation - Cache classes upfront where possible to reduce iterations
weierophinney added a commit that referenced this pull request Feb 23, 2015
- space around operators and between parens/opening braces
- use strict comparison when checking return value of assignment in a
  conditional
weierophinney added a commit that referenced this pull request Feb 23, 2015
@weierophinney
Copy link
Member

Merged to develop for release with 2.4.

weierophinney added a commit to zendframework/zend-servicemanager that referenced this pull request May 15, 2015
…DI-DefinitionList-Optimisation

DI definition list optimisation - Cache classes upfront where possible to reduce iterations
weierophinney added a commit to zendframework/zend-servicemanager that referenced this pull request May 15, 2015
weierophinney added a commit to zendframework/zend-di that referenced this pull request May 15, 2015
…DI-DefinitionList-Optimisation

DI definition list optimisation - Cache classes upfront where possible to reduce iterations
weierophinney added a commit to zendframework/zend-di that referenced this pull request May 15, 2015
- space around operators and between parens/opening braces
- use strict comparison when checking return value of assignment in a
  conditional
weierophinney added a commit to zendframework/zend-di that referenced this pull request May 15, 2015
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants