Date: Sat, 5 May 2001 16:21:05 -0700 (PDT) From: John Polstra <jdp@FreeBSD.org> To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/libexec/rtld-elf rtld.c rtld.h src/libexec/rtld-elf/alpha reloc.c src/libexec/rtld-elf/i386 reloc.c Message-ID: <200105052321.f45NL5Z24754@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
jdp 2001/05/05 16:21:05 PDT Modified files: libexec/rtld-elf rtld.c rtld.h libexec/rtld-elf/alpha reloc.c libexec/rtld-elf/i386 reloc.c Log: 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 Revision Changes Path 1.52 +22 -6 src/libexec/rtld-elf/rtld.c 1.22 +11 -2 src/libexec/rtld-elf/rtld.h 1.12 +12 -5 src/libexec/rtld-elf/alpha/reloc.c 1.7 +10 -5 src/libexec/rtld-elf/i386/reloc.c To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200105052321.f45NL5Z24754>