perf: is_executable calls fs_access for every file on every reload
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- lua, neovim
- Ambito
- devtools, performance
Direzione di ricerca
Inizia individuando utils.is_executable e i due punti di chiamata descritti: la creazione di un nuovo FileNode ed Explorer:reload, dove lstat è già disponibile. Controlla come lo stat espone il tipo di file e i bit di esecuzione, quindi confronta il comportamento con i controlli fs_access esistenti. Il lavoro è completato quando i file regolari senza bit di esecuzione saltano quella chiamata di sistema, mentre directory, collegamenti e file eseguibili mantengono il comportamento attuale.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
utils.is_executable calls vim.uv.fs_access(path, "X") for:
- every new
FileNode, and - every existing node on every
Explorer:reload.
The node's lstat result is already available at both call sites.
Impact
fs_access costs 7.7µs per call vs 1.9µs for lstat. is_executable is about 11% of reload_explorer on a fully expanded 16.8k-node tree.
Proposed fix
Pass the existing stat into is_executable. A regular file with none of the user, group or other execute bits set can never pass access(X), even as root, so return false without the syscall. Files with execute bits, directories and links still use fs_access, happy to follow up with a PR soon.
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).
- Lingua principale
- Lua
- Stelle
- 8.7k
- Fork
- 642
- Merge medio
- 1g 4m
- PR unite (30g)
- 11
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di nvim-tree/nvim-tree.lua
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
nvim-tree/nvim-tree.lua#3382 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
nvim-tree/nvim-tree.lua#3381 ·
I maintainer di solito rispondono entro 1 giorno
-
Use vim.Option getters and setters instead of directly settingForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
nvim-tree/nvim-tree.lua#3357 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Migrate To vim.packApertadocumentation PR please
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
nvim-tree/nvim-tree.lua#3179 · 6 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
perf: Filters:custom calls getcwd for every file, even with no custom filtersForse già presa @hood l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 25/100
nvim-tree/nvim-tree.lua#3386 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di nvim-tree/nvim-tree.lua
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
bug confirmed discord guide:tyrs-watch locale:enUS navigation v0.3.2
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
fitzforge/polestar#855 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
translation
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
KristanLaimon/PanelsPlus#16 ·
-
Bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
DennisRas/WeeklyKnowledge#164 ·
-
linux 上使用 msvc-wine 无法增量构建Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno