making use of --dynamic-list-cpp-typeinfo
koos vriezen
koos.vriezen at gmail.com
Mon Oct 23 14:58:44 CEST 2006
2006/9/19, Dirk Mueller <mueller at kde.org>:
>
> Hi,
>
> since about a week, the GNU binutils have gained support for reducing
> intra-shared lib relocation overhead. Via a special flag, you can ask the
> linker to resolve relocations any uninteresting or only a certain set of
> symbols always internally. This is a significant gain for C++, where you
> normally don't make use of LD_PRELOAD's that overwrite C++ mangled symbols.
>
> I've tested this against libqt3-3.3.6, and it reduces the symbol relocations
> by about 60%, reducing library footprint by about 8% and improving relocation
> startup time by far more than 50%.
>
> On a fully internally linked KDE 3.x system, I measured a relocation speedup
> of something between 20-40%. I've not done login time benchmarking.
>
> Below is a patch for KDE 3.x for further testing.
I give this a try with qt3 using the binutils_2.17.50.6, compiled Qt
first with this option.
Looks like applications starts faster, I have however quite some
application that don't start anymore. Gdb point to
QString::QString(cons QString&) and the same overloaded = operator.
Valgrind finds a 0x0 derefernce here and indeed adding something like
if (!d)
d = makeSharedNull();
makes it crash somewhere later. Haven't found a way to work around
this, eg. make
#if defined( Q_OS_MAC ) || defined(Q_OS_SOLARIS) || defined(Q_OS_HPUX)
|| defined(Q_OS_AIX)
this also succeed my OS, so QString::null gets a valid d-pointer, doesn't help.
Ideas?
Koos
More information about the Kde-optimize
mailing list