Task #56538

Epic #55070: Workpackages

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

Bug #52949: Speed decrease since 4.5

Bug #56307: Findings from Bootstrap/PackageManager/ClassLoader analyses

Cache the $GLOBALS['TYPO3_LOADED_EXT'] as an array

Added by Ernesto Baschny over 5 years ago. Updated over 1 year ago.

Status:
Closed
Priority:
Should have
Category:
Performance
Target version:
Start date:
2014-03-04
Due date:
% Done:

100%

TYPO3 Version:
6.2
PHP Version:
Tags:
Complexity:
Sprint Focus:

Description

Several core components still access $GLOBALS['TYPO3_LOADED_EXT'] directly. Basically it's used to loop through the activated extensions and also to check if some extension is installed.

Since the Package Management, this array is being simulated by an object (LoadedExtensionsArray). Plan was to be able to add deprecation messages for accessing this array in future.

When accessing a FE with one USER_INT, accessing this object takes about 10% of the time.

It should be considered if we cannot generate the original array on first request, cache it, and then make the GLOBAL array available again to whoever uses it. It's just a list of extensions. The gain of the future possibility of throwing a deprecation message opposed to simply having this array as an array and be fast is probably not worth it.


Related issues

Duplicated by TYPO3 Core - Task #56341: Evaluate if it is really reasonable to have TYPO3\CMS\Core\Compatibility\LoadedExtensionsArray Closed 2014-02-26

Associated revisions

Revision 64c46b91 (diff)
Added by Thomas Maroschik over 5 years ago

[TASK] Improve performance of Bootstrap/PackageManager

This patch is a combined patch which tries to address
the findings from the Bootstrap/PackageManager/ClassLoader
performance analysis.

Resolves: #56934
Resolves: #56310
Resolves: #56331
Resolves: #56341
Resolves: #56538
Releases: 6.2
Change-Id: I269159906534f58eff59973ab30e170fadac10e4
Reviewed-on: https://review.typo3.org/28329
Reviewed-by: Ernesto Baschny
Tested-by: Ernesto Baschny

History

#1 Updated by Thomas Maroschik over 5 years ago

  • Status changed from New to Accepted
  • Assignee set to Thomas Maroschik

#2 Updated by Michiel Roos over 5 years ago

It would be great if \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded() could then just return a isset($GLOBALS['TYPO3_LOADED_EXT']['extension']).

#3 Updated by Markus Klein over 5 years ago

Actually this is a regression.

Using basic functions like array_keys() does not work on objects like this, so this is was a breaking change.

#4 Updated by Gerrit Code Review over 5 years ago

  • Status changed from Accepted to Under Review

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/28329

#5 Updated by Gerrit Code Review over 5 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/28329

#6 Updated by Thomas Maroschik over 5 years ago

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

#7 Updated by Riccardo De Contardi over 1 year ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF