The short answer is no.
On a system without ASLR (e.g. XP), loading a DLL at a non-preferred address has several costs:
- The relocations section has to be parsed and fixups have to be applied to the entire image.
- The act of applying fixups causes copy-on-write faults which are relatively expensive CPU-wise, and also force pages to be read from disk even if they are not referenced by the app itself.
- Every process that loads the DLL at a non-preferred address gets a private copy of every page that is written to, leading to increased memory usage.
Items 2 and 3 are by far the biggest costs, and are the main reason why manually rebasing DLLs used to be necessary.
With ASLR, fixups are applied transparently by the OS, making it look like the DLL was actually loaded at its preferred address. There are no copy-on-write faults, and no process-private pages are created. Also, fixups are applied only to the pages that are actually accessed by the app, rather than the entire image, which means no extra data is read from disk.
In addition to that, manual rebasing schemes can't prevent all base address conflicts (for example, DLLs from different vendors can conflict with each other, or an OS DLL could increase in size due to a hotfix and spill over into a range reserved for some other DLL, etc.). ASLR is a lot more efficient at dealing with these issues, so when looking at the system as a whole it can actually improve performance.