perf: is_executable calls fs_access for every file on every reload
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- lua, neovim
- Área
- devtools, performance
Línea de trabajo
Empieza por localizar utils.is_executable y los dos puntos de llamada descritos: la creación de un nuevo FileNode y Explorer:reload, donde lstat ya está disponible. Comprueba cómo el stat expone el tipo de archivo y los bits de ejecución, y luego compara el comportamiento con las comprobaciones existentes de fs_access. El trabajo estará terminado cuando los archivos regulares sin bits de ejecución omitan esa llamada al sistema, mientras que los directorios, los enlaces y los archivos ejecutables conserven su comportamiento actual.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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).
- Lenguaje dominante
- Lua
- Estrellas
- 8.7k
- Forks
- 642
- Merge medio
- 1 d 4 min
- PR fusionados (30 d)
- 11
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de nvim-tree/nvim-tree.lua
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
nvim-tree/nvim-tree.lua#3382 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
nvim-tree/nvim-tree.lua#3381 ·
Los mantenedores suelen responder en 1 día
-
Use vim.Option getters and setters instead of directly settingPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
nvim-tree/nvim-tree.lua#3357 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Migrate To vim.packAbiertodocumentation PR please
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
nvim-tree/nvim-tree.lua#3179 · 6 comentarios ·
Los mantenedores suelen responder en 1 día
-
perf: Filters:custom calls getcwd for every file, even with no custom filtersPosiblemente ocupada @hood la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
nvim-tree/nvim-tree.lua#3386 ·
Los mantenedores suelen responder en 1 día
Todos los issues de nvim-tree/nvim-tree.lua
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
Los mantenedores suelen responder en 1 día
-
bug confirmed discord guide:tyrs-watch locale:enUS navigation v0.3.2
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
fitzforge/polestar#855 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
translation
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
KristanLaimon/PanelsPlus#16 ·
-
Bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 91/100
DennisRas/WeeklyKnowledge#164 ·
-
linux 上使用 msvc-wine 无法增量构建Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día