我有一个函数,在我的代码中会多次调用。此函数更新数组中的2个值(作为参数传递)。由于它被调用了太多次,我想要优化这个功能。
是的,我确实有一个最简单的代码,
int global_array[MAX];
int * ptr_to_my_global_array = &global_array[0];
main()
{
int a=0,b=0;
my_func(a,b);
a++;b++;
my_func(a,b);
a++;b++;
my_func(a,b);
a++;b++;
my_func(a,b);
a++;b++;
my_func(a,b);
a++;b++;
//and so on
}
void my_func(int c,int d)
{
*ptr_to_my_global_array = c;
ptr_to_my_global_array++;
*ptr_to_my_global_array = d;
ptr_to_my_global_array++;
}
请不要建议任何mem_copy,mem_set解决方案。可能没有其他解决方案,但只是好奇我是否可以加快速度。
答案 0 :(得分:2)
使用宏而不是函数调用,这可能会消除调用函数的开销。但是,您可能会发现编译器优化已经这样做了。
基准和测试: - )
答案 1 :(得分:0)
如果您正在测试不同的内容,可以将其与以下内容进行比较:
inline void my_func(int c,int d)
{
ptr_to_my_global_array[0] = c;
ptr_to_my_global_array[1] = d;
ptr_to_my_global_array += 2;
}
优化器可能会对事情进行排序,以便两者之间没有区别,但您可能会看到它对发出的代码有什么不同(如果有的话)。
基本上,你的功能非常简单,很难看出人类如何能比优化者更好地做任何事情。因此,对您的计划的任何真正改进都需要在main
而非my_func
。