Page MenuHomePhabricator

Memoize paths
ClosedPublic

Authored by joshuaspence on Apr 23 2015, 1:44 AM.
Tags
None
Referenced Files
F15401461: D12520.id30185.diff
Mon, Mar 17, 5:49 PM
F15401247: D12520.id30185.diff
Mon, Mar 17, 4:32 PM
F15401020: D12520.id30185.diff
Mon, Mar 17, 3:16 PM
F15400779: D12520.id30185.diff
Mon, Mar 17, 1:59 PM
F15400583: D12520.id30185.diff
Mon, Mar 17, 12:40 PM
F15400401: D12520.id30185.diff
Mon, Mar 17, 11:25 AM
F15283011: D12520.id30059.diff
Tue, Mar 4, 4:30 AM
Unknown Object (File)
Feb 17 2025, 2:29 AM
Subscribers

Details

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.

Diff Detail

Repository
rARC Arcanist
Branch
master
Lint
Lint Passed
Unit
Test Failures
Build Status
Buildable 5462
Build 5480: [Placeholder Plan] Wait for 30 Seconds

Unit TestsFailed

TimeTest
1,074 msArcanistPuppetLintLinterTestCase::testLinter
12,656 msArcanistXHPASTLinterTestCase::testLinter
814 msArcanistCSSLintLinterTestCase::testLinter
175 msArcanistCSSLintLinterTestCase::testVersion
134 msArcanistChmodLinterTestCase::testLinter
View Full Test Results (2 Failed · 47 Passed · 4 Skipped)

Event Timeline

joshuaspence retitled this revision from to Memoize paths.
joshuaspence updated this object.
joshuaspence edited the test plan for this revision. (Show Details)
joshuaspence added a reviewer: epriestley.
epriestley edited edge metadata.

I think these need to be properties ($this->filteredPaths), not statics, because a lint engine may instantiate several copies of some subclass but they might conceivably be configured to filter different paths. For example:

$linters[] = new X()->setRunOnDirectories(true);
$linters[] = new X()->setRunOnDirectories(false);

Then just set $this->filteredPaths = null; in setPaths() to wipe the cache.

This revision now requires changes to proceed.Apr 23 2015, 1:47 AM
joshuaspence edited edge metadata.

Don't use a static variable

epriestley edited edge metadata.
This revision is now accepted and ready to land.Apr 23 2015, 9:43 AM
This revision was automatically updated to reflect the committed changes.