From f7b43d4565fb27cf53c77a86bf7d4afd8f5a556f Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Sun, 11 Jun 2023 11:32:09 +0200 Subject: [PATCH] Performance: Prevent sorting of files in PhpFilesFinder (#4164) * Prevent sorting of files in PhpFilesFinder * Update FilesFinder.php --- src/FileSystem/FilesFinder.php | 13 ++++++++----- src/FileSystem/PhpFilesFinder.php | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/FileSystem/FilesFinder.php b/src/FileSystem/FilesFinder.php index fe0cfac888a..31cfc551ee3 100644 --- a/src/FileSystem/FilesFinder.php +++ b/src/FileSystem/FilesFinder.php @@ -28,7 +28,7 @@ public function __construct( * @param string[] $suffixes * @return string[] */ - public function findInDirectoriesAndFiles(array $source, array $suffixes = []): array + public function findInDirectoriesAndFiles(array $source, array $suffixes = [], bool $sortByName = true): array { $filesAndDirectories = $this->filesystemTweaker->resolveWithFnmatch($source); @@ -37,7 +37,7 @@ public function findInDirectoriesAndFiles(array $source, array $suffixes = []): $currentAndDependentFilePaths = $this->unchangedFilesFilter->filterAndJoinWithDependentFileInfos($filePaths); - return array_merge($currentAndDependentFilePaths, $this->findInDirectories($directories, $suffixes)); + return array_merge($currentAndDependentFilePaths, $this->findInDirectories($directories, $suffixes, $sortByName)); } /** @@ -45,7 +45,7 @@ public function findInDirectoriesAndFiles(array $source, array $suffixes = []): * @param string[] $suffixes * @return string[] */ - private function findInDirectories(array $directories, array $suffixes): array + private function findInDirectories(array $directories, array $suffixes, bool $sortByName = true): array { if ($directories === []) { return []; @@ -55,8 +55,11 @@ private function findInDirectories(array $directories, array $suffixes): array ->files() // skip empty files ->size('> 0') - ->in($directories) - ->sortByName(); + ->in($directories); + + if ($sortByName) { + $finder->sortByName(); + } if ($suffixes !== []) { $suffixesPattern = $this->normalizeSuffixesToPattern($suffixes); diff --git a/src/FileSystem/PhpFilesFinder.php b/src/FileSystem/PhpFilesFinder.php index b01cb0ccc87..2dc846e26c7 100644 --- a/src/FileSystem/PhpFilesFinder.php +++ b/src/FileSystem/PhpFilesFinder.php @@ -20,7 +20,7 @@ public function __construct( */ public function findInPaths(array $paths): array { - $filePaths = $this->filesFinder->findInDirectoriesAndFiles($paths, ['php']); + $filePaths = $this->filesFinder->findInDirectoriesAndFiles($paths, ['php'], false); // filter out non-PHP files foreach ($filePaths as $key => $filePath) {