System programming in D (Was: The God Language)
Chad J
chadjoan at __spam.is.bad__gmail.com
Fri Dec 30 11:04:31 PST 2011
On 12/30/2011 02:00 PM, Walter Bright wrote:
> On 12/30/2011 10:31 AM, Chad J wrote:
>> As an aside, I think that people want forced inlining because it gives
>> them another tool to tweak with. My experiences with optimization tend
>> to suggest I can usually optimize things really well with a few short
>> cycles of profile->experiment->profile. I don't think I've ever really
>> /needed/ to dive into assembly yet. My ventures into the assembler have
>> been either purely recreational or academic in nature. Now, something
>> like an inline feature can help a lot with the "experiment" part of the
>> cycle. It's just another knob to twist and see if it gives the result
>> you want. Portability be damned, if it gets the thing out the door, I'm
>> using it! But, I kind of hate that attitude. So it's much more
>> comforting to be able to twist that knob without sacrificing portability
>> too. I wouldn't expect it to run as fast on other compilers; I /would/
>> expect it to compile and run correctly on other compilers. And if
>> enregistering variables is more important, then we might want to have a
>> way to enregister variables too.
>
> Back in the olden days, I provided a detailed list of optimizer switches
> that turned on/off all sorts of optimizations. In the end it turned out
> that all people wanted was an "optimize" switch which is why dmd has
> only -O.
>
> The reason dmd has a -inline switch is because it's hard to debug code
> that has been inlined.
>
> The reason C's "register" keyword went away was because:
>
> 1. the variables after optimization transformations may be very
> different than before
>
> 2. programmers stunk at picking the right variables for registers
>
> 3. even if (2) was done right, as soon as the first code maintainer
> dinked with it, they never bothered to go fix the register declarations
>
> 4. optimizers got pretty good at automatic register allocation
>
> 5. there's nothing portable about enregistering, even with a portable
> syntax
>
> 6. the register keyword offered no way to hint which variables were more
> important to enregister than others
Huh, bummer dudes.
6 seems pretty solvable. Too bad about the other 5. ;)
More information about the Digitalmars-d
mailing list