Bug #26107
Proxy class builder rebuild classes without AOP on every change
Status: | Resolved | Start date: | 2011-04-19 | |
---|---|---|---|---|
Priority: | Must have | Due date: | ||
Assigned To: | Christopher Hlubek | % Done: | 100% |
|
Category: | - | |||
Target version: | - | |||
PHP Version: | Complexity: | |||
Has patch: | Affected Flow version: |
Description
Since classes that don't get a proxy class (if they don't use DI or AOP) are not put inside the cache, the build method of the ProxyClassBuilder will not find a cache entry inside the classes cache (hasCacheEntryForClass is always false).
So one change of a file still means a lot of time to go through each of these classes and not building an AOP proxy for them on the next run.
One possibility would be to also cache classes without proxy code (means duplication) or to store information somewhere inside the object configuration cache (means some effort to keep it in sync if the class eventually introduces DI or AOP).
Related issues
Associated revisions
[BUGFIX] Caching of unproxied classes in ProxyClassBuilder
Classes that don't get a proxy class will be stored in the object
configuration cache as separate cache entries with a specific class tag.
This way the ProxyClassBuilder can skip these classes if they didn't
change.
Additionally some minor optimizations have been applied to the
ProxyClassBuilder (call-by-reference for large arrays, selection of
aspect classes).
Resolves: #26107
Change-Id: I5f75b00bccc4ef22a5214d4e4c227aa1c76e3f72
History
#1 Updated by Christopher Hlubek over 4 years ago
- Status changed from New to Accepted
- Assigned To changed from Robert Lemke to Christopher Hlubek
I found a solution that seems to work. Inside the ProxyClassBuilder each target class that doesn't get a proxy is marked in the object configuration cache. But we have to cache each unproxied class individually to have separate cache tags.
I'll push a change request soon.
#2 Updated by Mr. Hudson over 4 years ago
Patch set 1 of change I5f75b00bccc4ef22a5214d4e4c227aa1c76e3f72 has been pushed to the review server.
It is available at http://review.typo3.org/1888
#3 Updated by Christopher Hlubek over 4 years ago
- Status changed from Accepted to Under Review
#4 Updated by Mr. Hudson about 4 years ago
Patch set 2 of change I5f75b00bccc4ef22a5214d4e4c227aa1c76e3f72 has been pushed to the review server.
It is available at http://review.typo3.org/1888
#5 Updated by Christopher Hlubek about 4 years ago
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
Applied in changeset 50eff49b74ea33b3236781dfbb5269ca9263642d.