perf: filetype sorter calls vim.filetype.match on every comparison
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 77/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- lua, neovim
- 領域
- backend, performance
調査の方向性
まず filetype sorter と関数パス sort.sorter を読みます。issue にはそれらのファイル名が記載されていないため、ソートのコード内で見つけてください。ソート中に vim.filetype.match が何回実行されるか、また各ソートでキャッシュを再構築する方法を確認します。各名前がソートごとに1回だけ解決され、順序が変わらず、報告されたディレクトリのソートが高速化されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Problem
With sort.sorter = "filetype", Sorter:filetype calls vim.filetype.match twice per comparison. A merge sort makes O(n log n) comparisons, and vim.filetype.match is expensive.
The sort.sorter function path also calls vim.filetype.match once per node.
Impact
Sorting a directory with 3.3k entries took 4459ms on master. This runs on every reload of that directory.
Proposed fix
Resolve each name's filetype once per sort, using a cache that is rebuilt on every sort so that vim.filetype.add changes still apply. In testing this brings the same sort down to 532ms, with identical ordering.
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).
- 主要言語
- Lua
- スター
- 8.7k
- フォーク
- 642
- 平均マージ
- 1日 4分
- マージ済み PR(30日)
- 11
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
nvim-tree/nvim-tree.lua のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
nvim-tree/nvim-tree.lua#3383 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
nvim-tree/nvim-tree.lua#3381 ·
メンテナーはふだん 1 日以内に返信
-
Use vim.Option getters and setters instead of directly setting対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
nvim-tree/nvim-tree.lua#3357 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Migrate To vim.packオープンdocumentation PR please
難易度 1/5 1時間未満 初心者へのやさしさ 65/100
nvim-tree/nvim-tree.lua#3179 · コメント 6 件 ·
メンテナーはふだん 1 日以内に返信
-
perf: Filters:custom calls getcwd for every file, even with no custom filters対応中かも @hood が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 25/100
nvim-tree/nvim-tree.lua#3386 ·
メンテナーはふだん 1 日以内に返信
nvim-tree/nvim-tree.lua の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
メンテナーはふだん 1 日以内に返信
-
bug confirmed discord guide:tyrs-watch locale:enUS navigation v0.3.2
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
fitzforge/polestar#855 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
translation
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
KristanLaimon/PanelsPlus#16 ·
-
Bug
難易度 1/5 1時間未満 初心者へのやさしさ 91/100
DennisRas/WeeklyKnowledge#164 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
メンテナーはふだん 1 日以内に返信