Skip to content

Commit

Permalink
Performance: Prevent sorting of files in PhpFilesFinder (#4164)
Browse files Browse the repository at this point in the history
* Prevent sorting of files in PhpFilesFinder

* Update FilesFinder.php
  • Loading branch information
staabm committed Jun 11, 2023
1 parent 3d31e31 commit f7b43d4
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 6 deletions.
13 changes: 8 additions & 5 deletions src/FileSystem/FilesFinder.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -37,15 +37,15 @@ 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));
}

/**
* @param string[] $directories
* @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 [];
Expand All @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion src/FileSystem/PhpFilesFinder.php
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit f7b43d4

Please sign in to comment.