AAs of struct or array

Pelle pelle.mansson at gmail.com
Thu May 27 11:49:39 PDT 2010


On 05/27/2010 02:33 PM, bearophile wrote:
> I have noticed a significant speed difference between foo1 and foo2 (D2 code):
>
> import std.c.stdio: printf;
>
> int foo1(int x, int y) {
>      static int[int[2]] cache;
>      int[2] args = [x, y];
>      cache[args] = x;
>      return x;
> }
>
> int foo2(int x, int y) {
>      static struct Pair { int x, y; }
>      static int[Pair] cache;
>      Pair args = Pair(x, y);
>      cache[args] = x;
>      return x;
> }
>
> void main() {
>      enum int N = 600;
>      int tot;
>      foreach (x; 1 .. N)
>          foreach (y; 1 .. N)
>              tot += foo2(x, y); // use foo1 or foo2 here
>      printf("%d\n", tot);
> }
>
>
> Bye,
> bearophile

On my machine, foo1 takes around 9 times longer.

Why is this?


More information about the Digitalmars-d mailing list