Mail Archives: cygwin-developers/1998/04/15/20:23:01
From: Sergey Okhapkin <sos AT buggy DOT prospect DOT com DOT ru>
Date: Thu, 16 Apr 1998 00:03:04 +0400
I designed this import library format to speed-up process startup. No
exports are linked statically, all dll symbols (except LoadLibrary() and
GetProcAddres() in libkernel32.a) are resolved dynamically on demand. I
hope this should speed-up the startup time of a process. Actual linking is
performed only on the first call of dll-exported function, the next calls
are a bit faster than in a current implementation (direct jump instead of
indirect jump). Dll-exported datas should be accessed/imported in a old
(current) way. Library files will have a smaller size than now. New format
is compatible with old object files.
Very Unix like.
Besides the function name, you can include a pointer to a structure
holding the DLL name and the static variable holding the library
HANDLE. Then we don't have to have separate do_call$dllname
functions, and can instead have a single one in libcygwin.a.
However, before checking this in, I'd be interested in hearing what
kind of performance improvement you get.
It seems to me that we could change the linker to set up the import
address table with the DLL timestamp. That should reduce symbol
resolution time to zero, and might well be faster still.
Ian
- Raw text -