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.

Reply via email to