freebsd-dev/libexec/rtld-elf
John Polstra c15e7faad5 Performance improvements for the ELF dynamic linker. These
particularly help programs which load many shared libraries with
a lot of relocations.  Large C++ programs such as are found in KDE
are a prime example.

While relocating a shared object, maintain a vector of symbols
which have already been looked up, directly indexed by symbol
number.  Typically, symbols which are referenced by a relocation
entry are referenced by many of them.  This is the same optimization
I made to the a.out dynamic linker in 1995 (rtld.c revision 1.30).

Also, compare the first character of a sought-after symbol with its
symbol table entry before calling strcmp().

On a PII/400 these changes reduce the start-up time of a typical
KDE program from 833 msec (elapsed) to 370 msec.

MFC after:	5 days
2001-05-05 23:21:05 +00:00
..
alpha Performance improvements for the ELF dynamic linker. These 2001-05-05 23:21:05 +00:00
amd64 Performance improvements for the ELF dynamic linker. These 2001-05-05 23:21:05 +00:00
i386 Performance improvements for the ELF dynamic linker. These 2001-05-05 23:21:05 +00:00
debug.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
debug.h Add a new function dllockinit() for registering thread locking 1999-12-27 04:44:04 +00:00
Makefile - Backout botched attempt to intoduce MANSECT feature. 2001-03-26 14:22:12 +00:00
malloc.c Add `_PATH_DEVZERO'. 2000-12-09 09:35:55 +00:00
map_object.c Get the actual pathname of the dynamic linker from the executable's 1999-08-30 01:54:13 +00:00
rtld.1 Prepare for mdoc(7)NG. 2001-01-16 09:15:57 +00:00
rtld.c Performance improvements for the ELF dynamic linker. These 2001-05-05 23:21:05 +00:00
rtld.h Performance improvements for the ELF dynamic linker. These 2001-05-05 23:21:05 +00:00
xmalloc.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00