diff options
| author | Bozhidar Batsov <bozhidar@batsov.dev> | 2026-02-28 10:08:48 +0200 |
|---|---|---|
| committer | Bozhidar Batsov <bozhidar@batsov.dev> | 2026-02-28 10:22:31 +0200 |
| commit | b9840f09bea90933accea9252a16d66b1df9d8d4 (patch) | |
| tree | 430f4b7b664e9c72c431e098628748cc662d660a | |
| parent | 1b8a0f809450c8cbb5dcacf9234970983b83b729 (diff) | |
Use hash set for deleted file removal in projectile-dir-files-alien
The deleted file check used member inside seq-remove, which is O(n*m)
where n is total files and m is deleted files. Convert the deleted
list to a hash set for O(1) lookups, making the overall operation O(n).
| -rw-r--r-- | projectile.el | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/projectile.el b/projectile.el index b1c7c18..a7f7de3 100644 --- a/projectile.el +++ b/projectile.el @@ -1579,7 +1579,9 @@ IGNORED-DIRECTORIES may optionally be provided." (deleted (unless (and projectile-git-use-fd projectile-fd-executable) (projectile-git-deleted-files directory)))) (if deleted - (seq-remove (lambda (f) (member f deleted)) files) + (let ((deleted-set (make-hash-table :test 'equal :size (length deleted)))) + (dolist (f deleted) (puthash f t deleted-set)) + (seq-remove (lambda (f) (gethash f deleted-set)) files)) files))) (t (projectile-files-via-ext-command directory (projectile-get-ext-command vcs)))))) |
