mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-29 02:02:40 +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;
|
const GRANULARITY_GLOBAL = 4;
|
||||||
|
|
||||||
private $id;
|
private $id;
|
||||||
protected $paths = array();
|
protected $paths = array();
|
||||||
protected $data = array();
|
private $filteredPaths = null;
|
||||||
|
protected $data = array();
|
||||||
protected $engine;
|
protected $engine;
|
||||||
protected $activePath;
|
protected $activePath;
|
||||||
protected $messages = array();
|
protected $messages = array();
|
||||||
|
@ -274,19 +275,24 @@ abstract class ArcanistLinter {
|
||||||
|
|
||||||
final public function addPath($path) {
|
final public function addPath($path) {
|
||||||
$this->paths[$path] = $path;
|
$this->paths[$path] = $path;
|
||||||
|
$this->filteredPaths = null;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
final public function setPaths(array $paths) {
|
final public function setPaths(array $paths) {
|
||||||
$this->paths = $paths;
|
$this->paths = $paths;
|
||||||
|
$this->filteredPaths = null;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filter out paths which this linter doesn't act on (for example, because
|
* Filter out paths which this linter doesn't act on (for example, because
|
||||||
* they are binaries and the linter doesn't apply to binaries).
|
* 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();
|
$engine = $this->getEngine();
|
||||||
|
|
||||||
$keep = array();
|
$keep = array();
|
||||||
|
@ -314,7 +320,11 @@ abstract class ArcanistLinter {
|
||||||
}
|
}
|
||||||
|
|
||||||
final public function getPaths() {
|
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) {
|
final public function addData($path, $data) {
|
||||||
|
|
Loading…
Reference in a new issue