[OT] The Usual Arithmetic Confusions
Ola Fosheim Grøstad
ola.fosheim.grostad at gmail.com
Mon Jan 31 10:06:40 UTC 2022
On Monday, 31 January 2022 at 09:48:42 UTC, Elronnd wrote:
> Maybe I was insufficiently clear. I'm not talking about the
> case where you work around it, but the case where you leave the
> 'dead' code in..
It can certainly be a problem in an inner loop. This is like with
caches, at some point you hit the threshold for the loop where it
it is pushed out of the loop-buffer in the CPU pipeline and then
it matters quite a bit.
Anyway, the argument you made is not suitable if you create a
language that you want to be competitive in system level
programming. When programmers get hit, they get hit, and then it
is an issue.
You can remove many individual optimizations with only a small
effect on the average program, but each optimization you remove
make you less competitive.
Currently most C/C++ code bases are not written in a high level
fashion in performance critical functions, but we are moving
towards more higher level programming in performance code now
that compilers are getting "smarter" and hardware is getting more
diverse. The more diverse hardware you have, the more valuable is
high quality optimization. Or rather, the cost of tuning code is
increasing…
>> but ask yourself: is it a good idea to design your language
>> in such a way that the compiler is unable to remove this
>
> If you use modular arithmetic, then yes, you should not permit
> the compiler to remove that condition.
In D you always use modular arithmetics and you also don't have
constraints on integers. Thus you get extra bloat.
It matters when it matters, and then people ask themselves: why
not use language X where this is not an issue?
More information about the Digitalmars-d
mailing list