[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: Re: kinit: A new way to start KDE programs!
From: Waldo Bastian <bastian () suse ! de>
Date: 1999-12-26 12:43:51
[Download RAW message or body]
On Sun, 26 Dec 1999, you wrote:
> Hi, Waldo,
>
> Nice work! Question, though. Did you do or consider doing a
> benchmark where all the standard libs are already linked together and
> the KDE app links against that? What I mean is a KDE-special ".so"
> library, say "libkdecomb.so", which is a combination of the typical
> libraries used by a KDE app: libkimgio, libjpeg, libtiff, libz,
> libpng, libqt, libX11, libm, libjscript, libkfile, libkfm,
> libkdecore, libXext, libkdeui, libstdc++, and libc (or their KRASH
> equivalents). I would predict this would give you most of the cost
> savings of your proposal without the (huge) disadvantage you mention
> at the end of your proposal.
No, i haven't. But my understanding of the issue is that putting
everything in one library will not give the desired advantage unless we
have a way to prevent this libary from "relocating". Relocating
consists of doing symbol lookups and adding offsets to addresses. Under
Linux, libraries in general need to be relocated (That's why you need
to compile libs with the various -PIC options). If you do an "objdump
-syms" of a library and filter out the symbols which live in the .data
section you will see that all 'vtables' live there. Typically all these
vtables need to be relocated. You can start an application like e.g.
kedit as follows: "LD_DEBUG=statistics kedit" and then you will see
that the linker needs to do 30.000 to 40.000 relocations. (38482 in my
case) This takes about 200ms on my computer. (This is more than the
150ms stated in the readme, because kedit also links in libkspell,
libkio and libkfile) This link time is very much a function of the
number of relocations to be done and much less dependant on the number
of libs to link.
Putting everything in one lib does not reduce the number of required
relocations dramatically because this lib still needs to be relocated.
One could try to make a non-relocatable library which loads to a fixed
address but this is rather cumbersome. Not to mention that it would
require the recompilation of libraries out of the control of KDE. (we
can hardly provide system/compiler dependent libs like libc and
libstdc++)
The "huge" disadvantage you mention is not _that_ huge in my opinion.
It is still possible to identify the process based on the output of ps.
Instead of "kedit" it now gets listed as "kinit: kedit". You just can't
use "killall -9 kedit" but have to use "kill -9 <pid>". If you use a
program like "ktop" this is unlikely to affect you at all. You just
need to be aware of this when working from the shell.
As an advantage you can clean up your desktop with "killall -9 kinit"
>;-) (Don't try this at home kids!)
Cheers,
Waldo
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic