Related articles |
---|
optimizing address calculation? joggingsong@gmail.com (2007-09-18) |
Re: optimizing address calculation? DrDiettrich1@aol.com (Hans-Peter Diettrich) (2007-09-18) |
Re: optimizing address calculation? rupesh0508@gmail.com (2007-09-24) |
Re: optimizing address calculation? alexc@TheWorld.com (Alex Colvin) (2007-09-24) |
Re: optimizing address calculation? joggingsong@gmail.com (2007-09-25) |
From: | joggingsong@gmail.com |
Newsgroups: | comp.compilers |
Date: | Tue, 18 Sep 2007 03:36:12 -0000 |
Organization: | Compilers Central |
Keywords: | C, optimize, question |
Posted-Date: | 18 Sep 2007 08:13:52 EDT |
Hi, everyone.I encountered the problem and hope to get help from you.
Here is some structs definition.
typedef struct test{
int a[20];
int b[20];
}test1;
typedef struct test{
int c[20];
int d[20];
test1 test1a[20];
}test2;
test2 test2a;
test2 *pTest2a = &test2a;
in the program, I refer to the variable test2a by the pointer
for example
for(i = 0; i <20; i++)
{
pTest2a->test1a[x].b[i] = i;
}
Although in the loop pTest2a->test1a[x] is fixed, it seems the
generated codes calculate
the address from pTest2a. If it is changed to the following:
int pInt = pTest2a->test1a[x].b;
for(i = 0; i < 20; i++)
{
*pInt++ = i;
}
The new generated code is much faster.
Is it difficult for c compiler to generate the faster code?
Thanks
Jogging
[I don't think it's difficult, I think nested structures of arrays are
rare enough that the people who write optimizer in whatever compiler
you're using didn't worry about it. -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.