On Tuesday, 12 February 2013 at 17:33:08 UTC, deadalnix wrote:
This is a lot o code

Fortunately, like a lot of code you don't need to look at it to use it. That is the purpose of it.

struct ReductionMap(K, V, alias reduction_op = "+", alias init = 0) {
    mixin ReadOnly!_dataMap;
    mixin ReadOnly!_reduction;
    alias V[K] DataMap;
    ...
    private {
      DataMap _dataMap;
      V _reduction = init;
    }
  }


and don't handle some cases. For instance


I did not say it handled everything and if you have strategies that will allow me to simply, declaratively get a better selection between the two pass types I'd incorporate it. If and until the language changes, what other choices are there?

I just used the numbers to come up with a heuristic, which I imagine, given the state of things is how any one makes the choice. The only difference is the choice is somewhat formalized.


struct A {
    long a;
    double b;
}

is generally better passed by ref, where

struct A {
    long a;
    long b;
}

is better passed by value.

Any performance numbers?

Even if that were true, is it realistic to expect a compiler to get it right each time?

Thanks
Dan

Reply via email to