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