3 ms·
This should also be the case for nim. Generated C always looks very simple with -d:danger (when all memory access checks disappear).
by vjerancrnjak 4y ago
This should also be the case for nim. Generated C always looks very simple with -d:danger (when all memory access checks disappear).
- cb321 4y agoIf I do nimble build -d:lto -d:danger --passC:-march=native I get 1920 fps while if I do nimble build -d:lto -d:release --passC:-march=native I still get 1775 fps. So, at least for Nim, the checks are only a 1.08x slowdown..Not so bad compared to the 2521 vs 1626 = 1.55x Zig-Rust slowdown on the author's machine. Heck, I see 1.33x differences in run times between the first & second run of the rust branch of his benchmark, but only 1.05x diffs in run times between 1st & 2nd Nim branch. In my experience, reasoning about things like this is rarely as simple as "bounds checks" which are (often) the most highly predictable branches.
- vjerancrnjak 4y agoTrue. Recently I noticed that std/sha1 takes 8x the time on M1 release vs danger. Yet on amd64 it's only a <10% difference.