dmd -run speed trends
Witold Baryluk
witold.baryluk at gmail.com
Sun Dec 17 06:42:10 UTC 2023
On Friday, 8 December 2023 at 04:15:45 UTC, kinke wrote:
> On Thursday, 7 December 2023 at 22:19:43 UTC, Witold Baryluk
> wrote:
>> Maybe switching to something like gold or mold linker could be
>> help a little. This should help with dmd too a little.
>
> Not just a little; the default bfd linker is terrible. My
> timings with various linkers (mold built myself) on Ubuntu 22,
> using a `writeln` variant, best of 5:
>
> | | bfd v2.38 | gold v1.16 | lld v14 | mold
> v2.4 |
> |------------------ |------|------|------|-------|
> | DMD v2.106.0 | 0.34 | 0.22 | 0.18 | fails to link |
> | LDC v1.36.0-beta1 | 0.47 | 0.24 | 0.22 | 0.18 |
>
> Bench cmdline: `dmd -Xcc=-fuse-ld=<bfd,gold,lld,mold> -run
> bench.d`
Hi Martin.
mold 2.3.0 and 2.4.0 unfortunately fail for me with ldc version
1.35.0 (DMD v2.105.2, LLVM 16.0.6)
```
Starting program: /usr/bin/ld.mold -v -plugin
/usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so
-plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper
-plugin-opt=-fresolution=/tmp/ccYlnSJL.res
-plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s
-plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc
-plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m
elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker
/lib64/ld-linux-x86-64.so.2 -pie -o a
/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. a.o /usr/lib/ldc_rt.dso.o -lphobos2-ldc-shared -ldruntime-ldc-shared --gc-sections -lrt -ldl -lpthread -lm -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o
[Thread debugging using libthread_db enabled]
Using host libthread_db library
"/lib/x86_64-linux-gnu/libthread_db.so.1".
mold 2.4.0 (compatible with GNU ld)
[Detaching after fork from child process 515412]
Program received signal SIGSEGV, Segmentation fault.
__pthread_kill_implementation (threadid=<optimized out>,
signo=signo at entry=11, no_tid=no_tid at entry=0) at
./nptl/pthread_kill.c:44
44 ./nptl/pthread_kill.c: No such file or directory.
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>,
signo=signo at entry=11, no_tid=no_tid at entry=0) at
./nptl/pthread_kill.c:44
#1 0x00007ffff7aa815f in __pthread_kill_internal (signo=11,
threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2 0x00007ffff7a5a472 in __GI_raise (sig=11) at
../sysdeps/posix/raise.c:26
#3 0x000055555663bf5d in mold::elf::fork_child () at
./elf/subprocess.cc:47
#4 0x0000555555d75500 in mold::elf::elf_main<mold::elf::X86_64>
(argc=<optimized out>, argv=<optimized out>) at ./elf/main.cc:365
#5 0x00007ffff7a456ca in __libc_start_call_main
(main=main at entry=0x555555666f90 <main(int, char**)>,
argc=argc at entry=56, argv=argv at entry=0x7fffffffd7e8)
at ../sysdeps/nptl/libc_start_call_main.h:58
#6 0x00007ffff7a45785 in __libc_start_main_impl
(main=0x555555666f90 <main(int, char**)>, argc=56,
argv=0x7fffffffd7e8, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffd7d8) at
../csu/libc-start.c:360
#7 0x0000555555667e51 in _start ()
(gdb)
```
More information about the Digitalmars-d
mailing list