Bug #26107

Proxy class builder rebuild classes without AOP on every change

Added by Christopher Hlubek over 4 years ago. Updated about 4 years ago.

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

related to TYPO3.Flow - Bug #25965: AOP ProxyClassBuilder always detects an aspect as "change... Resolved 2011-04-14

Associated revisions

Revision 50eff49b
Added by Christopher Hlubek about 4 years ago

[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

Also available in: Atom PDF