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