perf: is_executable calls fs_access for every file on every reload
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 72/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- lua, neovim
- Lĩnh vực
- devtools, performance
Hướng nghiên cứu
Bắt đầu bằng cách tìm utils.is_executable và hai vị trí gọi được mô tả: lúc tạo FileNode mới và Explorer:reload, nơi lstat đã có sẵn. Kiểm tra cách stat cung cấp loại tệp và các bit thực thi, rồi so sánh hành vi với các kiểm tra fs_access hiện có. Hoàn tất khi các tệp thông thường không có bit thực thi bỏ qua lời gọi hệ thống đó, còn thư mục, liên kết và tệp thực thi vẫn giữ nguyên hành vi hiện tại.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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).
- Ngôn ngữ chính
- Lua
- Star
- 8.7k
- Fork
- 642
- Merge trung bình
- 1 ngày 4 phút
- Pull request đã merge (30 ngày)
- 11
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của nvim-tree/nvim-tree.lua
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
nvim-tree/nvim-tree.lua#3382 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
nvim-tree/nvim-tree.lua#3381 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Use vim.Option getters and setters instead of directly settingCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
nvim-tree/nvim-tree.lua#3357 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Migrate To vim.packĐang mởdocumentation PR please
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 65/100
nvim-tree/nvim-tree.lua#3179 · 6 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
perf: Filters:custom calls getcwd for every file, even with no custom filtersCó thể đã có người làm @hood đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 25/100
nvim-tree/nvim-tree.lua#3386 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của nvim-tree/nvim-tree.lua
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 83/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Balatro-Multiplayer/BalatroMultiplayerPvP#620 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 63/100
Balatro-Multiplayer/BalatroMultiplayerAPI#55 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
silverbulletmd/silverbullet#2231 ·
Maintainer thường phản hồi trong vòng 2 ngày