I made a manual fast profiling and I see that most of the time in
project-buffers actually goes to tramp-sh-file-name-handler.
207 42% - project-buffers
207 42% - apply
207 42% - #<compiled -0x1f5d919efefc0a09>
200 40% - file-in-directory-p
200 40% - tramp-file-name-handler
197 40% - apply
197 40% - tramp-sh-file-name-handler
197 40% - tramp-handle-file-in-directory-p
183 37% - tramp-run-real-handler
183 37% - file-in-directory-p
124 25% - file-equal-p
124 25% - tramp-file-name-handler
121 24% - apply
121 24% - tramp-sh-file-name-handler
121 24% - tramp-handle-file-equal-p
85 17% - tramp-run-real-handler
85 17% - file-equal-p
52 10% - file-truename
52 10% - tramp-file-name-handler
41 8% - apply
41 8% - tramp-sh-file-name-handler
41 8% -
tramp-sh-handle-file-truename
28 5% + file-remote-p
10 2% + file-local-name
3 0% + file-name-as-directory
It goes specifically to file-in-directory-p as you said. So maybe the
improvement there may be also desirable if the difference after the
optimization can reduce the time for file-in-directory-p (or the caller)
at least to the half.