Alex Rivera | Logout

Overhead of DLL

Asked 2010-10-27T04:49:01.300
9

I have a quite basic question.

  1. When a library is used only by a single process. Should I keep it as a static library?
  2. If I use the library as a DLL, but only a single process uses it. **What will be the overhead?*
Edit
Report

1 Answer

3

There are two overheads to a DLL. First as the DLL is loaded into memory the internal addresses must be fixed for the actual address that the DLL is loaded at, versus the addresses assumed by the linker. This can be minimized by re-basing the DLLs. The second overhead is when the program and DLL are loaded, as the program calls into the DLL have the addresses of the functions filled in. These overheads are generally negligible except for very large programs and DLLs.

If this is a real concern you can use delay-loaded DLLs which only get loaded as they are called. If the DLL is never used, for example it implements a very uncommon function, then it never gets loaded at all. The downside is that there's a short delay the first time the DLL is called.

I like to use statically linked libraries, not to decrease the overhead but to minimize the hassle of having to keep the DLL with the program.

answered 2010-10-27T05:15:05.770

Your Answer