Task #57594

Epic #55070: Workpackages

Epic #55065: WP: Overall System Performance (Backend and Frontend)

Epic #55656: Optimize overall Extbase performance

Optimize ReflectionService Cache handling

Added by Marc Bastian Heinrichs over 5 years ago. Updated about 1 year ago.

Status:
Closed
Priority:
Should have
Category:
Extbase
Target version:
Start date:
2017-05-31
Due date:
% Done:

100%

TYPO3 Version:
8
PHP Version:
7.0
Tags:
Complexity:
Sprint Focus:

Description

A the moment the ReflectionService cache handling has some drawbacks:
  • it doesn't support nested Extensions (#12518)
  • the cache data for main extensions (e.g. fluid/extbase) are redundant cached and e.g. are not reused from different extensions on one page (performance)
  • some Reflection evaluation is missing, that it could be used by the ClassInfoFactory (performance)

Subtasks

Feature #81389: Injected ReflectionService without call to initialize/shutdownClosed


Related issues

Blocks TYPO3 Core - Task #55654: Extbase: Optimize ClassInfoFactory with the ClassInfoCache Closed 2014-02-04

Associated revisions

Revision 73b5e17d (diff)
Added by Alexander Schnitzler about 2 years ago

[!!!][TASK] Replace ClassInfo with ClassSchema

Extbase came along with two main caches for reflection data.
extbase_reflection and extbase_object. The latter mostly stored
information that were relevant to the dependency injection, like
inject methods and properties and constructor parameters. The
information was gathered by actual reflection and by analysing
doc blocks of properties and methods.

extbase_reflection stored similar reflection and doc block data
about objects but mainly for the parts outside dependency injection.
For example, the validation resolver used it to identify @validate
tags, the ActionController used it to identity which properties not
to validate. The ORM also used it a lot to find annotated types via
@var and so on.

There were a few issues with these two approaches:

- A lot of redundant data was fetched
- Data was fetched multiple times at different locations
- The extbase_reflection cache was stored each plugin seperately,
resulting in a lot of redundant cache data for each plugin cache
- At a lot of places, the reflection service was used to reflect
objects, but the data wasn't cached or taken from a cache resulting
in performance drawbacks

This patch solves these issues with several approaches:

- The extbase_object cache has been removed completely and all
necessary information about objects, mainly @inject stuff, is
now fetched from the ReflectionService as well.
- The ReflectionService does still create ClassSchema instances
but these were improved a lot. All necessary information is now
gathered during the instantiation of ClassSchema instances. That
means that all necessary data is fetched once and then it can be
used everywhere making any further reflection superfluous.
- As runtime reflection has been removed completey, along with it
several reflection classes, that analyzed doc blocks, have been
removed as well. These are no longer necessary.
- The extbase_reflection cache is no longer plugin based and will
no longer be stored in the database in the first place. Serialized
ClassSchema instances will stored in typo3temp.

Releases: master
Resolves: #57594
Resolves: #55654
Change-Id: I93b905c85c4f28775f014ca8b585347bf6f1e7d3
Reviewed-on: https://review.typo3.org/54381
Reviewed-by: Benni Mack <>
Tested-by: Benni Mack <>
Tested-by: TYPO3com <>
Reviewed-by: Susanne Moog <>
Tested-by: Susanne Moog <>

Revision d9d8f19a (diff)
Added by Alexander Schnitzler about 2 years ago

[FOLLOWUP][!!!][TASK] Replace ClassInfo with ClassSchema

Increase test coverage of ClassSchema and ReflectionService

Releases: master
Resolves: #57594
Resolves: #55654
Change-Id: If413dc0b428f94dffef13e1875e3a7af4f9939b7
Reviewed-on: https://review.typo3.org/54482
Tested-by: TYPO3com <>
Reviewed-by: Wouter Wolters <>
Tested-by: Wouter Wolters <>
Reviewed-by: Jigal van Hemert <>
Tested-by: Jigal van Hemert <>
Reviewed-by: Markus Klein <>
Tested-by: Markus Klein <>

History

#1 Updated by Marc Bastian Heinrichs over 5 years ago

  • Category set to Extbase

#2 Updated by Alexander Opitz about 4 years ago

  • Target version changed from next-patchlevel to 8 LTS

#3 Updated by Benni Mack over 2 years ago

  • Target version changed from 8 LTS to Candidate for patchlevel

#4 Updated by Gerrit Code Review about 2 years ago

  • Status changed from Accepted to Under Review

Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#5 Updated by Gerrit Code Review about 2 years ago

Patch set 2 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#6 Updated by Gerrit Code Review about 2 years ago

Patch set 3 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#7 Updated by Gerrit Code Review about 2 years ago

Patch set 4 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#8 Updated by Gerrit Code Review about 2 years ago

Patch set 5 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#9 Updated by Gerrit Code Review about 2 years ago

Patch set 6 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#10 Updated by Gerrit Code Review about 2 years ago

Patch set 7 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#11 Updated by Gerrit Code Review about 2 years ago

Patch set 8 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#12 Updated by Gerrit Code Review about 2 years ago

Patch set 9 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#13 Updated by Alexander Schnitzler about 2 years ago

  • Target version changed from Candidate for patchlevel to 9.0
  • TYPO3 Version changed from 6.2 to 8
  • PHP Version set to 7.0

#14 Updated by Gerrit Code Review about 2 years ago

Patch set 10 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#15 Updated by Gerrit Code Review about 2 years ago

Patch set 11 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#16 Updated by Gerrit Code Review about 2 years ago

Patch set 12 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#17 Updated by Gerrit Code Review about 2 years ago

Patch set 13 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#18 Updated by Gerrit Code Review about 2 years ago

Patch set 14 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#19 Updated by Gerrit Code Review about 2 years ago

Patch set 15 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#20 Updated by Gerrit Code Review about 2 years ago

Patch set 16 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#21 Updated by Gerrit Code Review about 2 years ago

Patch set 17 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#22 Updated by Gerrit Code Review about 2 years ago

Patch set 18 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#23 Updated by Gerrit Code Review about 2 years ago

Patch set 19 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#24 Updated by Gerrit Code Review about 2 years ago

Patch set 20 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#25 Updated by Gerrit Code Review about 2 years ago

Patch set 21 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#26 Updated by Gerrit Code Review about 2 years ago

Patch set 22 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381

#27 Updated by Anonymous about 2 years ago

  • Status changed from Under Review to Resolved
  • % Done changed from 0 to 100

#28 Updated by Gerrit Code Review about 2 years ago

  • Status changed from Resolved to Under Review

Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54482

#29 Updated by Anonymous about 2 years ago

  • Status changed from Under Review to Resolved

#30 Updated by Benni Mack about 1 year ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF