[TYPO3-core] Announcing TYPO3 CMS 6.1.0 Alpha1
JoH asenau
info at cybercraft.de
Tue Mar 19 16:43:19 CET 2013
Am 19.03.2013 16:16, schrieb Alexander Opitz:
> Heyho,
>
> so I found one of the big mess in time and it seems to be the Class
>
> TYPO3\CMS\Core\Core\ClassLoader
>
>
> In ClassLoader::unregisterAutoloader we have three lines
>
> static::$classNameToFileMapping = array();
> static::$aliasToClassNameMapping = array();
> static::$classNameToAliasMapping = array();
>
> All three vars are very large and so PHP needs much time to clean up
> memory. As we are on unloading, do we need to reset them to empty
> arrays? This takes 1%-2% of time for a cached request.
>
> In ClassLoader::loadClassLoaderCache we have the lines
>
> static::$classNameToAliasMapping =
> array_flip($aliasToClassNameMapping);
> self::setAliasesForEarlyInstances();
>
> The array_flip function call takes around 1% of time
> $aliasToClassNameMapping is to large.
>
> The setAliasesForEarlyInstances function does a array_intersect on very
> large arrays and takes around 5% of time.
>
> So I get 7% - 8% speed improvements only by removing this lines.
>
> I know, thats not the best way, but a point to start, maybe we need to
> reduce the amount of old class names to get the arrays smaller (5000+
> entries).
BTW: The results are similar to my first test, but the major problem is
not about array functions - you could i.e. replace array_intersect with
array_inersect_key on flipped arrays to get a better result - actually
most of the time is eaten by the string functions used to convert old
class names to new class names and back.
And of course another problem is that we got tons of small classes now
due to the code cleanup process. So the point might be to find a better
balance between overall number of classes and overall number of methods
within a single class.
But could we please discuss this in a separate thread about exactly that
specific topic: Performance improvements? Otherwise it might not be
recognized by other people who just look at the topic.
Cheers
Joey
--
Wenn man keine Ahnung hat: Einfach mal Fresse halten!
(If you have no clues: simply shut your gob sometimes!)
Dieter Nuhr, German comedian
Xing: http://contact.cybercraft.de
Twitter: http://twitter.com/bunnyfield
TYPO3 cookbook (2nd edition): http://www.typo3experts.com
More information about the TYPO3-team-core
mailing list