On 5/9/2015 10:16 AM, Russel Winder via Digitalmars-d wrote:
Python has tuple assignment so you see things like:
previous, current = current, previous + current
especially if you are doing silly things like calculating Fibonacci
Sequence values. Translating this to D, you end up with:
TypeTuple!(current, next) = tuple(next , current +next);
I am assuming this is horrendously inefficient at run time compared to
having the intermediate value explicit:
auto t = next;
next = current + next;
current = t;
or is it?
It probably depends on the compiler. The way to find out is to look at the
generated assembler.
Tuples are implemented as structs. I know that ldc is capable of slicing structs
into register-sized pieces and optimizing them independently, dmd does not. So
ldc would very possibly generate the kind of code for that that you'd like.