> 
> --8<---------------cut here---------------start------------->8---
> (progn
>  (require 'tramp-sh)
>  (tramp-cleanup-all-connections)
>  (elp-instrument-list '(completion-all-completions 
> tramp-handle-file-name-completion tramp-sh-handle-file-name-all-completions))
>  (setq unread-command-events (mapcar 'identity 
> "///ssh:fencepost:/\tgd/g\tnuorg/\tcopyright.list\n"))
>  (call-interactively #'find-file)
>  (elp-results)
>  (elp-reset-all))
> --8<---------------cut here---------------end--------------->8---

Thanks very much for this much improved testing code (which also saves the 
tedium of slowly retyping!).  I altered it slightly to include a few more 
function, and target my local wired server:

(progn
 (require 'tramp-sh)
 (tramp-cleanup-all-connections)
 (elp-instrument-list '(file-exists-p completing-read read-file-name-internal 
read-file-name-default tramp-handle-file-name-completion 
tramp-sh-handle-file-name-all-completions))
 (setq unread-command-events (mapcar 'identity 
"///ssh:datpi:/home/pi/no\tex\t/do\tma\tce\t\n"))
 (call-interactively #'find-file)
 (elp-results)
 (elp-reset-all))

My timing results (emacs -Q, v27.2):

From *scratch*:

read-file-name-default                     1           6.600062      6.600062
completing-read                            1           6.507604      6.507604
read-file-name-internal                    17          1.386566      
0.0815627058
tramp-handle-file-name-completion          6           0.771607      
0.1286011666
tramp-sh-handle-file-name-all-completions  6           0.72563       
0.1209383333
file-exists-p                              16          0.0443550000  
0.0027721875

From remote dired:

read-file-name-default                     1           0.877973      0.877973
completing-read                            1           0.873579      0.873579
tramp-handle-file-name-completion          6           0.735771      
0.1226284999
tramp-sh-handle-file-name-all-completions  6           0.716579      
0.1194298333
read-file-name-internal                    17          0.039287      0.002311
file-exists-p                              16          0.0167529999  
0.0010470624

So really only very little difference inside the tramp completion functions; 
they seem to be doing the same job independent of the starting point.  But the 
completing-read itself, which is where find-file is spending its time, is 
taking 8x longer!  And read-file-name-internal is 35x slower.  Do you find this 
as well?  I’ll dig a bit deeper and see if I can narrow it down further. 

Reply via email to