Lower than C?
Don Clugston
dac at nospam.com.au
Fri Dec 7 01:23:44 PST 2007
Christopher Wright wrote:
> bearophile wrote:
>> Jesse Phillips:
>>
>> Thank you for your comments.
>>
>>> That is to say the less specific something is described the more one
>>> can optimize to build for it.<
>>
>> But you need a quite more intelligent compiler to do (optimize) it,
>> and to build a more intelligent compiler you need much more work and
>> time. You can see how the Intel compiler optimizes compared to DMD,
>> and the Intel compiler is quite primitive still compared to some of
>> the things said in that article.
>>
>>
>>> I would also like to say that going to a language lower that C is
>>> working backwards. There was a reason languages have begun to
>>> abstract hardware features in cost to efficiency. Its to much coding
>>> for trivial things. It sounds as though he wanted a code base where
>>> people could take optimized code for these trivial tasks. My question
>>> is why doesn't he start this, he already has a language, asm is the
>>> lower level C.<
>>
>> I am not advocating the creation of a new language between ASM and C.
>> ASM can be used in D code already, but it may require too much work
>> (the nice High Level Assembly too:
>> http://webster.cs.ucr.edu/AsmTools/HLA/). And it looks like C is less
>> and less able to use well the features of the modern CPUs. Sometimes
>> even the VM of C# 3.0 is able to automatically use hardware better
>> than "easy" C compiled with GCC... So maybe some things can be added
>> to D to allow a better usage of the modern CPU, such things aren't
>> useful for the whole program and for trivial tasks, but only for the
>> small speed-critical parts of the D code where you may need max speed
>> (like tight loops, etc) (where some people today are already using ASM
>> in the middle of D code, so the readability my improve). (The
>> disadvantage is this may increase the language complexity, but not
>> much the compiler complexity).
>>
>> Bye,
>> bearophile
>
> I think there will be a lot of specific but common cases in which some
> assembly tricks like they mention would result in a significant speed
> increase. These will probably be relatively difficult for the compiler
> to suss out. I think a library of templates containing inline asm is the
> way to go: you get most of the benefits of custom-crafted assembly, and
> quite possibly better than you yourself could write, but you don't have
> to spend the time writing assembly every time you encounter a similar
> problem.
Exactly true. That's what I've been working on the past month or so.
> The only problem is that combining these may not be nearly as efficient
> as writing the code manually. I'm sure there's a workaround, though.
Yes. It's called CTFE + string mixins. And you can do better than a traditional
hand-crafted library of asm code, because you can also optimise the way it's
called. Eg, checks for special cases can be moved out of the asm library into
the user's D code, so that the compiler has a chance to optimise them away.
<g>.
More information about the Digitalmars-d
mailing list