perf: Filters:custom calls getcwd for every file, even with no custom filters
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- lua, neovim
- Bereich
- performance
Rechercherichtung
Start with lua/nvim-tree/explorer/filters.lua, especially Filters:custom and Filters:prepare; the issue identifies the repeated vim.uv.cwd() call and proposes resolving it once per directory only when custom patterns exist. Check the existing filtering tests and add coverage for empty and nonempty custom patterns. Done when filtering behavior stays the same and the unnecessary cwd calls are avoided; pull request #3387 is already open for this issue.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Problem
Filters:custom calls vim.uv.cwd() for every file that gets scanned, via utils.path_relative(path, vim.uv.cwd()) (lua/nvim-tree/explorer/filters.lua:180). This happens even when filters.custom is empty, the default, so the result is never used.
getcwd is slow on some platforms: about 61µs per call on macOS.
Impact (profile on master)
| Operation | Share of time on this line |
|---|---|
api.tree.expand_all() |
33% |
Explorer:reload_explorer() |
42% |
Proposed fix
- Return early from
Filters:customwhen there are no custom patterns. - Resolve the cwd once per directory in
Filters:prepare, and only when there are custom patterns.
Filtering behaviour stays the same.
Happy to follow up with a PR as soon as I get some time.
Environment: macOS, Nvim v0.13.0-dev, LuaJIT 2.1. Test repo: 16.8k files and folders, 3.1k git status entries (modified, untracked, ignored). Measured headless with vim.uv.hrtime() and the LuaJIT profiler (jit.p).
- Vorherrschende Sprache
- Lua
- Sterne
- 8.7k
- Forks
- 642
- Ø Merge
- 23 Std. 23 Min.
- Gemergte PRs (30 T.)
- 11
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus nvim-tree/nvim-tree.lua
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
nvim-tree/nvim-tree.lua#3383 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
nvim-tree/nvim-tree.lua#3382 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
nvim-tree/nvim-tree.lua#3381 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Use vim.Option getters and setters instead of directly settingEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
nvim-tree/nvim-tree.lua#3357 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Migrate To vim.packOffendocumentation PR please
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 65/100
nvim-tree/nvim-tree.lua#3179 · 6 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in nvim-tree/nvim-tree.lua
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Balatro-Multiplayer/BalatroMultiplayerAPI#67 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
bug(bufdelete): all()/other() abort with "Invalid buffer id" when a buffer is wiped during the loopOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
folke/snacks.nvim#2986 ·
-
bug discord guide:ruins-of-lordaeron locale:enUS triage v0.3.2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
fitzforge/polestar#999 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
status: waiting-for-triage
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 86/100
fluent/fluent-bit#12747 · 2 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag