mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-25 16:22:42 +01:00
Memoize paths
Summary: Ref T7892. Memoize paths returned from `ARcanistLinter::getPaths()` to improve runtime performance. Test Plan: Wiped ~0.5 seconds off the total time to lint rARC. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: Korvin, epriestley Maniphest Tasks: T7892 Differential Revision: https://secure.phabricator.com/D12520
This commit is contained in:
parent
805ae12408
commit
46ce8a5a35
1 changed files with 14 additions and 4 deletions
|
@ -16,8 +16,9 @@ abstract class ArcanistLinter {
|
|||
const GRANULARITY_GLOBAL = 4;
|
||||
|
||||
private $id;
|
||||
protected $paths = array();
|
||||
protected $data = array();
|
||||
protected $paths = array();
|
||||
private $filteredPaths = null;
|
||||
protected $data = array();
|
||||
protected $engine;
|
||||
protected $activePath;
|
||||
protected $messages = array();
|
||||
|
@ -274,19 +275,24 @@ abstract class ArcanistLinter {
|
|||
|
||||
final public function addPath($path) {
|
||||
$this->paths[$path] = $path;
|
||||
$this->filteredPaths = null;
|
||||
return $this;
|
||||
}
|
||||
|
||||
final public function setPaths(array $paths) {
|
||||
$this->paths = $paths;
|
||||
$this->filteredPaths = null;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter out paths which this linter doesn't act on (for example, because
|
||||
* they are binaries and the linter doesn't apply to binaries).
|
||||
*
|
||||
* @param list<string>
|
||||
* @return list<string>
|
||||
*/
|
||||
final private function filterPaths($paths) {
|
||||
final private function filterPaths(array $paths) {
|
||||
$engine = $this->getEngine();
|
||||
|
||||
$keep = array();
|
||||
|
@ -314,7 +320,11 @@ abstract class ArcanistLinter {
|
|||
}
|
||||
|
||||
final public function getPaths() {
|
||||
return $this->filterPaths(array_values($this->paths));
|
||||
if ($this->filteredPaths === null) {
|
||||
$this->filteredPaths = $this->filterPaths(array_values($this->paths));
|
||||
}
|
||||
|
||||
return $this->filteredPaths;
|
||||
}
|
||||
|
||||
final public function addData($path, $data) {
|
||||
|
|
Loading…
Reference in a new issue