Speeding up importing Phobos files

Neia Neutuladh neia at ikeran.org
Sat Jan 19 20:32:07 UTC 2019


On Sat, 19 Jan 2019 11:56:29 -0800, H. S. Teoh wrote:
> Excellent finding! I *knew* something was off when looking up a file is
> more expensive than reading it.  I'm thinking a quick fix could be to
> just cache the intermediate results of each lookup, and reuse those
> instead of issuing another call to opendir() each time.  I surmise that
> after this change, this issue may no longer even be a problem anymore.

It doesn't even call opendir(). It assembles each potential path and calls 
exists(). Which might be better for only having a small number of imports, 
but that's not the common case.

I've a partial fix for Posix, and I'll see about getting dev tools running 
in WINE to get a Windows version. (Which isn't exactly the same, but if I 
find a difference in FindFirstFile / FindNextFile between Windows and 
WINE, I'll be surprised.)

I'm not sure what it should do when the same module is found in multiple 
locations, though -- the current code seems to take the first match. I'm 
also not sure whether it should be lazy or not.

Also symlinks and case-insensitive filesystems are annoying.

https://github.com/dhasenan/dmd/tree/fasterimport


More information about the Digitalmars-d mailing list