| |
| Posted by H. S. Teoh in reply to Zoadian | PermalinkReply |
|
H. S. Teoh
Posted in reply to Zoadian
| On Sun, Jul 14, 2024 at 12:52:36PM +0000, Zoadian via Digitalmars-d wrote:
> On Saturday, 13 July 2024 at 16:48:29 UTC, Walter Bright wrote:
> > On 7/13/2024 8:28 AM, Vladimir Panteleev wrote:
> > > It's equivalent to `-check=invariant=off -check=in=off -check=out=off -check=bounds=safeonly -check=assert=off -check=switch=off` (and what Nicholas pointed out).
> > >
> > > `-O` and `-inline` are orthogonal to `-release` (and to each
> > > other).
> >
> >
> > Hmm, checking the actual implementation, you're right. Someone must have changed it at some point. -release is supposed to be "fastest code". Need to fix that!
>
> then rename it to -benchmark.
+1. Calling it -release is misleading and breaks safety guarantees. That's very bad.
Alternatively, just redirect -release to running ldc2 instead. In almost every D program I've written, ldc2 produces an executable that runs 30-40% faster than the same program compiled by dmd (sometimes even 50%). No amount of suppressing bounds checks is going to give you that kind of performance boost, so why break safety over marginal gains that isn't winning you any benchmarks anyway? Just admit it and have -release run ldc2. Even with bounds checks still enabled, you get an instant 30% performance boost. *That's* what's gonna catch attention, not some half-baked safety-breaking switch in a suboptimal optimizer that's going to lose out to C benchmarks anyway.
T
--
"Holy war is an oxymoron." -- Lazarus Long
|