DragonFly commits List (threaded) for 2012-03
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
git: rtld: Support DT_GNU_HASH (startup performance increase)
commit 7629c6317998f850ebca23c296822ba08af09e5b
Author: John Marino <draco@marino.st>
Date: Fri Mar 9 08:40:34 2012 +0100
rtld: Support DT_GNU_HASH (startup performance increase)
This is another "First BSD to get" feature that Linux and Solaris
had years ago. Essentially DT_GNU_HASH is a GNU extension to the ELF
format that allows symbol searches much faster than the System V ABI
standard hash does. Both versions of our binutils have the capability
of generating GNU hashes alongside of (or instead of) the SysV hash.
The benefit comes at the real-time link stage when the rtld is
searching the libraries for symbols. For very large programs
written in languages such as c++ that tend to link in many libraries
with many symbols, the reduction in start-time can be dramatic.
According to benchmarks done by binutils team in 2006, more than 90% of
the symbol queries of OpenOffice Writer are rejected by the Bloom filter
before the string comparison takes place:
http://sources.redhat.com/ml/libc-alpha/2006-07/msg00034.html
Summary of changes:
libexec/rtld-elf/i386/reloc.c | 2 +-
libexec/rtld-elf/rtld.c | 347 ++++++++++++++++++++++++++-------------
libexec/rtld-elf/rtld.h | 20 ++-
libexec/rtld-elf/x86_64/reloc.c | 2 +-
4 files changed, 255 insertions(+), 116 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/7629c6317998f850ebca23c296822ba08af09e5b
--
DragonFly BSD source repository
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]