It appears that autoloading classes via MediaWiki's PSR-4 autoloader has a not insignificant performance penalty, especially when hundreds of PSR-4 classes like HookRunner's hook interfaces are autoloaded. Using a classmap autoloader, like we already do for PSR-4 classes from Composer dependencies, is a potential way to reduce the performance impact here.[1] For core classes, this can be done by simply not excluding PSR-4 classes in AutoloadGenerator, causing it to include appropriate mappings in the generated autoload.php classmap. I had to exclude one class_alias() declared in Result.php from the classmap with a NO_AUTOLOAD stanza, because including it broke AutoLoaderStructureTest's assertion that all aliases should be defined in the same file as the aliased class. Assuming this is still an issue, this would already have been a problem because the test was previously skipping every PSR-4 class. Excluding this file via NO_AUTOLOAD just restores that status quo. ---- [1] https://phabricator.wikimedia.org/T274041#8358399 Bug: T274041 Change-Id: I0aa62c944d874bf7a9f3a240e72e58fe6a887b28
24 lines
965 B
PHP
24 lines
965 B
PHP
<?php
|
|
/**
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*
|
|
* @file
|
|
*/
|
|
|
|
use Shellbox\Command\UnboxedResult;
|
|
|
|
// NO_AUTOLOAD -- breaks AutoLoaderStructureTest if included in classmap
|
|
class_alias( UnboxedResult::class, 'MediaWiki\\Shell\\Result', true );
|