help-emacs-windows
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [h-e-w] Extremely slow file name completion for remote drives


From: Lennart Borgman (gmail)
Subject: Re: [h-e-w] Extremely slow file name completion for remote drives
Date: Tue, 08 Apr 2008 10:22:41 +0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071031 Thunderbird/2.0.0.9 Mnenhy/0.7.5.666

It looks like there is something wrong. Try to follow the guidelines for bug reporting. If you find it is a bug in Emacs then report it. (It could be something in your setup too that does not work in 22.)


Valeriy E. Ushakov wrote:
I've been using ntemacs 20.x happily since 20.3, iirc, and have been
sticking with 20.7 for a while, mostly out of inertia.

I'm now trying to switch to 22.2 and I've run into a problem that
pretty much prevents me from switching.

I often work from home over VPN with files on remote drives at the
office.  The link is fast, so it's reasonably comfortable.  emacs20
takes maybe a second or two maximum to save a file or show filename
completion list (faster than it used to be on a uVAX, so I don't mind
:)

emacs22 OTOH is *extremely* slow when it comes to filename completeion
for remote drives.  It takes emacs22 some 10 to 30 seconds to print
"Making completion list..." and another dozen or two to actually come
up with the completion list.

Interestingly, when I'm actually saving a file, emacs22 saves it quite
fast, just like emacs20.  It's completion that is excruciatingly slow.
The set of customizations I have is ~the same in both emacs20 and
emacs22 and starting emacs22 without loading ~/.emacs doesn't change
anything - same extremely long delay for filename completion.

Completion in emacs20 launched alongside is snappy.  Using native file
dialog in emacs22 is also fast, so I'm pretty much convinced the
problem is somewhere in read-file-name.

I've traced emacs20 and emacs22 using SysInternals' File Monitor and I
see the following.

Emacs20 does for C-x C-f p:/ <TAB>

OPEN            P:\     SUCCESS Options: Open Directory  Access: 00100001
QUERY INFO      P:\     SUCCESS FileNameInformation
QUERY INFO      P:\     SUCCESS FileFsVolumeInformation
QUERY INFO      P:\     SUCCESS FileFsAttributeInformation
CLOSE           P:\     SUCCESS
OPEN            P:\     SUCCESS Options: Open Directory  Access: 00100001
DIRECTORY       P:\     SUCCESS FileBothDirectoryInformation: *
OPEN            P:\     SUCCESS Options: Open Directory  Access: 00100001
DIRECTORY       P:\     SUCCESS FileBothDirectoryInformation: work
CLOSE           P:\     SUCCESS
DIRECTORY       P:\     SUCCESS FileBothDirectoryInformation
OPEN            P:\     SUCCESS Options: Open Directory  Access: 00100001
DIRECTORY       P:\     SUCCESS FileBothDirectoryInformation: WINDOWS
CLOSE           P:\     SUCCESS
OPEN            P:\     SUCCESS Options: Open Directory  Access: 00100001
DIRECTORY       P:\     SUCCESS FileBothDirectoryInformation: tmp
CLOSE           P:\     SUCCESS
[...etc, completing under 2 secs...]



While emacs22 does:

OPEN            P:\     SUCCESS Options: Open Directory  Access: 00100001
QUERY INFO      P:\     SUCCESS FileNameInformation
QUERY INFO      P:\     SUCCESS FileFsVolumeInformation
QUERY INFO      P:\     SUCCESS FileFsAttributeInformation
CLOSE           P:\     SUCCESS
OPEN            P:\     SUCCESS Options: Open Directory  Access: 00100001
DIRECTORY       P:\     SUCCESS FileBothDirectoryInformation: *
OPEN            P:\work SUCCESS Options: Open  Access: 00100080
QUERY INFO      P:\work BUFFER OVERFLOW FileFsVolumeInformation
QUERY INFO      P:\work BUFFER OVERFLOW FileAllInformation
CLOSE           P:\work SUCCESS
OPEN            P:\work SUCCESS Options: Open  Access: 00100080
QUERY INFO      P:\work BUFFER OVERFLOW FileFsVolumeInformation
QUERY INFO      P:\work BUFFER OVERFLOW FileAllInformation
CLOSE           P:\work SUCCESS
DIRECTORY       P:\     SUCCESS FileBothDirectoryInformation
OPEN            P:\WINDOWS      SUCCESS Options: Open  Access: 00100080
QUERY INFO      P:\WINDOWS      BUFFER OVERFLOW FileFsVolumeInformation
QUERY INFO      P:\WINDOWS      BUFFER OVERFLOW FileAllInformation
CLOSE           P:\WINDOWS      SUCCESS
OPEN            P:\WINDOWS      SUCCESS Options: Open  Access: 00100080
QUERY INFO      P:\WINDOWS      BUFFER OVERFLOW FileFsVolumeInformation
QUERY INFO      P:\WINDOWS      BUFFER OVERFLOW FileAllInformation
CLOSE           P:\WINDOWS      SUCCESS
OPEN            P:\tmp  SUCCESS Options: Open  Access: 00100080
QUERY INFO      P:\tmp  BUFFER OVERFLOW FileFsVolumeInformation
QUERY INFO      P:\tmp  BUFFER OVERFLOW FileAllInformation
CLOSE           P:\tmp  SUCCESS
OPEN            P:\tmp  SUCCESS Options: Open  Access: 00100080
QUERY INFO      P:\tmp  BUFFER OVERFLOW FileFsVolumeInformation
QUERY INFO      P:\tmp  BUFFER OVERFLOW FileAllInformation
CLOSE           P:\tmp  SUCCESS
[...etc, taking about 22 secs...]

So with all those extra queries emacs22 only chugs along at few files
per second.

I've checked emacs21.3 and it's as fast as emacs20 and the File
Monitor log is similar to emacs20 too.

I've looked into emacs22 sources and I don't see radical diffs from
emacs-21.4a sources for dired.c.  I wonder if something was changed in
mingw stat emulation maybe.

Any help is appreciated.

SY, Uwe
--
address@hidden                       |       Zu Grunde kommen
http://snark.ptc.spbu.ru/~uwe/          |       Ist zu Grunde gehen







reply via email to

[Prev in Thread] Current Thread [Next in Thread]