Skip to content

Performance - optimize run with result cache #14072

@ondrejmirtes

Description

@ondrejmirtes

Feature request

What happens with the result cache: we get list of modified files, ExportedNodeResolver decides whether the modifications were only inside function bodies. If not, we also add dependent files to the list of files to analyse. If only function bodies were modified, we only analyse the modified file. Analysis runs for the list of files to analyse, results get merged with the rest from the result cache.

PHPStan only takes a few seconds to compute all this, but we never ran Blackfire to see if there are bottlenecks to conquery. In order to run with result cache even with --debug (to enforce single process), these lines in the ResultCacheManager have to be commented out:

		if ($debug) {
			if ($output->isVeryVerbose()) {
				$output->writeLineFormatted('Result cache not used because of debug mode.');
			}
			return new ResultCache($allAnalysedFiles, true, time(), $this->getMeta($allAnalysedFiles, $projectConfigArray), [], [], [], [], [], [], [], [], [], $currentFileHashes);
		}

Did PHPStan help you today? Did it make you happy in any way?

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions