Deewiant wrote:
> Walter Bright wrote:
>> Bug fixes.
>>
>> http://www.digitalmars.com/d/changelog.html
>
> http://d.puremagic.com/bugzilla/show_bug.cgi?id=67
>
> You have fixed bug 67, but it seems that compiling with -release is required.
> Compiling only with -O -inline the test code reports, on my computer, that
> std.math.abs() is almost 10 times slower. Shouldn't this change occur with
> -inline? I thought -release was only for removing stuff like asserts and contracts.
It may or may not be worth noting that bug 73
(http://d.puremagic.com/bugzilla/show_bug.cgi?id=73) does not exhibit the same
behaviour - the speeds reported for std.math.abs() and local abs() are always
only marginally different, regardless of the switches I throw at the compiler.

Deewiant wrote:
> It may or may not be worth noting that bug 73
> (http://d.puremagic.com/bugzilla/show_bug.cgi?id=73) does not exhibit the same
> behaviour - the speeds reported for std.math.abs() and local abs() are always
> only marginally different, regardless of the switches I throw at the compiler.
You can tell if it's being inlined or not by doing an obj2asm.

In article <e0qvh1$gs9$1@digitaldaemon.com>, Deewiant says...
>
>Walter Bright wrote:
>> Bug fixes.
>>
>> http://www.digitalmars.com/d/changelog.html
>
>http://d.puremagic.com/bugzilla/show_bug.cgi?id=67
>
>You have fixed bug 67, but it seems that compiling with -release is required.
>Compiling only with -O -inline the test code reports, on my computer, that
>std.math.abs() is almost 10 times slower. Shouldn't this change occur with
>-inline? I thought -release was only for removing stuff like asserts and contracts.
Take a look at dmd/src/dmd/mars.c - That explains it (and FWIW sounds reasonable
to me since -release will most likely be thrown when performance is an issue for
end-user builds after QA is complete).
- Dave

Dave wrote:
> In article <e0qvh1$gs9$1@digitaldaemon.com>, Deewiant says...
>> Walter Bright wrote:
>>> Bug fixes.
>>>
>>> http://www.digitalmars.com/d/changelog.html
>> http://d.puremagic.com/bugzilla/show_bug.cgi?id=67
>>
>> You have fixed bug 67, but it seems that compiling with -release is required.
>> Compiling only with -O -inline the test code reports, on my computer, that
>> std.math.abs() is almost 10 times slower. Shouldn't this change occur with
>> -inline? I thought -release was only for removing stuff like asserts and contracts.
>
> Take a look at dmd/src/dmd/mars.c - That explains it (and FWIW sounds reasonable
> to me since -release will most likely be thrown when performance is an issue for
> end-user builds after QA is complete).
>
> - Dave
>
>
IMHO it's reasonable to assume that one would want maximum performance in builds
with asserts and array bounds checking and such enabled.
I see that it would require some work to get it to work, and I don't
_personally_ really mind that much - I expect debug builds to be slow <g> - so
I'm not complaining.
It's just that I remembered some people who were worried about things like "a
program may not rely on array bounds checking happening" in the D documentation.
Such people are the type that would rarely compile with -release thrown.