我一直致力于解决一个问题,我需要优化一段代码来提高速度,并且遇到了一些令我困惑的结构定义/引用。我希望有人可以解释下面的代码,或者指出定义可能不是最佳的任何领域。
据我所知,有3个相关的代码片段。我在跟踪CycArr,cyc_inf和CycInf之间遇到了麻烦,并且想知道是否有一种更聪明的方式来声明* proc。
#if 0
static struct cycles c_start[PROC_CNT][CPU_CNT];
static struct cycles c_end[PROC_CNT][CPU_CNT];
#else
static CycArr c_start;
static CycArr c_end;
#endif
......结构的定义
struct cyc_inf
{
int var1;
int var2;
int var3;
}
typedef struct cyc_inf CycInf;
typedef CycInf CycArr [PROC_CNT][CPU_CNT];
...嵌套for循环是速度下降的地方,让我觉得有更好的方法来使用cyc_inf proc。
void function(int foo)
{
struct cyc_inf *proc[PROC_CNT + CPU_CNT];
if (foo)
proc = c_start;
else
proc = c_end;
for (int i=0; i<= PROC_CNT; i++)
{
for (int j=0; j<= CPU_CNT; j++)
{
proc[i][j].var1 = global1[j];
proc[i][j].var2 = global2[j];
proc[i][j].var3 = global3[j];
...
}
}
}
...我尝试对齐结构但没有看到任何改进。有没有办法使用更好的malloc?任何和所有的输入都表示赞赏,谢谢!