| |
| Posted by Siarhei Siamashka in reply to Witold Baryluk | PermalinkReply |
|
Siarhei Siamashka
Posted in reply to Witold Baryluk
| On Sunday, 17 December 2023 at 06:40:33 UTC, Witold Baryluk wrote:
> On Saturday, 16 December 2023 at 03:31:05 UTC, Walter Bright wrote:
> It would be illuminating to compare using printf rather than writefln.
Ok, added extern(C) int printf(const char *format, ...); , and measured various variants.
I don't think that there's much practical value in testing printf because it's not compatible with @safe and can't be recommended for developing normal D applications. This scenario gets out of touch with reality and becomes way too artificial.
>
- mold 2.3.3 and mold 2.4.0, segfault, when using with dmd or ldc2.
https://github.com/dlang/dmd/pull/15915 improves dmd's compatibility with mold 2.4.0 or maybe even fixes all problems if we are optimistic.
> [...]
stat("/usr/include/dmd/druntime/import/core/internal/array/comparison.di", 0x7ffecfc2a0f0) = -1 ENOENT (No such file or directory)
stat("/usr/include/dmd/druntime/import/core/internal/array/comparison.d", {st_mode=S_IFREG|0644, st_size=7333, ...}) = 0
stat("/usr/include/dmd/druntime/import/core/internal/array/comparison.d", {st_mode=S_IFREG|0644, st_size=7333, ...}) = 0
openat(AT_FDCWD, "/usr/include/dmd/druntime/import/core/internal/array/comparison.d", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=7333, ...}) = 0
read(3, "/**\n * This module contains comp"..., 7333) = 7333
close(3)
Each of these syscalls is about 15μs on my system (when stracing, probably little less in real run without strace overheads)
There should be a way to reduce this in half with smarter sequencing (i.e. do open first instead of stat + open + fstat ).
That's an interesting discovery. Now it's necessary to implement a proof of concept patch for dmd to check how much this can actually help in reality. Can you try this?
|