From kde-optimize Mon Oct 23 12:58:44 2006 From: "koos vriezen" Date: Mon, 23 Oct 2006 12:58:44 +0000 To: kde-optimize Subject: Re: making use of --dynamic-list-cpp-typeinfo Message-Id: X-MARC-Message: https://marc.info/?l=kde-optimize&m=116160838206673 2006/9/19, Dirk Mueller : > > 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 _______________________________________________ Kde-optimize mailing list Kde-optimize@kde.org https://mail.kde.org/mailman/listinfo/kde-optimize