GNU bug report logs -
#51699
29.0.50; [PATCH] Improve performance of 'file-name-case-insensitive-p' for Tramp files
Previous Next
Reported by: Jim Porter <jporterbugs <at> gmail.com>
Date: Tue, 9 Nov 2021 03:53:02 UTC
Severity: normal
Tags: patch
Found in version 29.0.50
Fixed in version 29.1
Done: Michael Albinus <michael.albinus <at> gmx.de>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
On 11/9/2021 11:34 AM, Michael Albinus wrote:
> This is obviously fine, so I've pushed this to master. Thanks for the
> improvement!
Thanks for merging!
>> Most Tramp methods have a 'tramp-FOO-file-name-p', and most of *those*
>> take a file name string and dissect it. This is a lot of duplicated
>> effort, so I modified 'tramp-find-foreign-file-name-handler' to pass
>> the dissected file name to any of the functions that support it (this
>> is indicated by an 'accepts-vec' property on the function). This
>> probably warrants some documentation (at least a NEWS entry), but I
>> wanted to be sure the strategy made sense before I wrote any docs.
>
> Yes, this makes sense, and it works in my environment (more regression
> tests running). I don't understand why you need the 'accepts-vec'
> property -- is there any operation left, which is passed to
> `tramp-find-foreign-file-name-handler' and which doesn't accept a VEC,
> after applying your patch? And if yes, couldn't we apply usual error
> handling?
There's `tramp-archive-file-name-p' and `tramp-crypt-file-name-p', which
both want a string filename. I looked over the implementation for those
and couldn't figure out an easy way to convert them to take a VEC. Maybe
it's possible though. I also looked into passing both the string form
and the vec form as separate arguments, but that turned out to be even
more complex than this implementation.
In addition, I did it this way to prevent any breakage for third-party
code that calls `tramp-register-foreign-file-name-handler'. If we change
`tramp-find-foreign-file-name-handler' to pass a VEC all the time, then
any code out there that expects a string will break. This is probably
rare, but I've seen a few examples of people doing stuff like this over
the years, e.g.
<https://github.com/thinkiny/emacs.d/blob/master/lisp/tramp-jumper.el>.
I'm not quite sure what you mean by the "usual error handling" though.
If there's a simpler way to do this, I'm happy to change the
implementation. So long as we can minimize the number of times
`tramp-dissect-file-name' is called, it should be possible to get
similar performance improvements to the current version of my patch.
This bug report was last modified 3 years and 248 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.