Joerg Sonnenberger <joerg%britannica.bec.de@localhost> writes:
> On Wed, Dec 30, 2015 at 06:01:05PM +0100, Tobias Nygren wrote:
>> On Wed, 30 Dec 2015 14:46:55 +0100
>> Benny Siegert <bsiegert%gmail.com@localhost> wrote:
>>
>> > I noticed that there is a large amount of files that are duplicated
>> > between the clang and libLLVM packages, albeit with slightly different
>> > paths (e.g. include vs. include/libLLVM).
>> >
>> > Is there a reason for this duplication? I would love to see clang
>> > depend on libLLVM, so that you can have both and not rebuild the world
>> > twice.
>>
>> I was told by someone (on IRC?) that the statically linked compiler is
>> quite a bit faster, but can't remember who and have no numbers to back
>> up this assertion. Someone should benchmark this.
>
> For small source files, dynamic linking overhead is a factor of 10.
Does it make sense to you that the overhead of doing the linking of the
compiler binaries (assuming everything is in the buffer cache) is 10x
the actual run time of the compiler?
I generated a very small source file that just includes stdlib and has a
main taht calls exit. It's hard to imagine anything real that is much
simpler.
on a netbsd-6 i386 box:
$ time sh -c 'for i in $(seq 1 1000); do gcc -c foo.c; done'
real 0m14.081s
user 0m8.836s
sys 0m4.786s
$ time sh -c 'for i in $(seq 1 1000); do clang -c foo.c; done'
real 0m24.070s
user 0m15.436s
sys 0m8.427s
That's with clang 3.7.0 as built from pkgsrc:
/usr/pkg/bin/clang:
-lz.1 => /usr/lib/libz.so.1
-lgcc_s.1 => /lib/libgcc_s.so.1
-lc.12 => /usr/lib/libc.so.12
-lpthread.1 => /usr/lib/libpthread.so.1
-ledit.3 => /usr/lib/libedit.so.3
-lterminfo.1 => /usr/lib/libterminfo.so.1
-lstdc++.6 => /usr/pkg/gcc48/i486--netbsdelf/lib/./libstdc++.so.6
-lm.0 => /usr/lib/libm.so.0
-lgcc_s.1 => /usr/pkg/gcc48/i486--netbsdelf/lib/./libgcc_s.so.1
I don't see clang invoking anything else with ktrace. Are you saying
with these libs linked statically it would be vastly faster? Or is this
the static version because the llvm libs are in the binary:
-rwxr-xr-x 1 root wheel 53959712 Dec 7 11:08 /usr/pkg/bin/clang
vs being linked dynamically also? Then I'd see 240s?
----------------------------------------
#include <stdlib.h>
int
main()
{
exit(0);
}
Attachment:
signature.asc
Description: PGP signature