gpt4 book ai didi

c - 以下哪项会更有效率?

转载 作者:行者123 更新时间:2023-12-02 05:22:00 25 4
gpt4 key购买 nike

在 C 中:

假设函数“Myfuny()”有 50 行代码,其中还调用了其他较小的函数。以下哪一个代码效率更高?

void myfunction(long *a, long *b);
int i;
for(i=0;i<8;i++)
myfunction(&a, &b);

myfunction(&a, &b);
myfunction(&a, &b);
myfunction(&a, &b);
myfunction(&a, &b);
myfunction(&a, &b);
myfunction(&a, &b);
myfunction(&a, &b);
myfunction(&a, &b);

如有任何帮助,我们将不胜感激。

最佳答案

那是过早的优化,您根本不应该关心...

现在,从代码维护的角度来看,第一种形式(带有循环)肯定更好。

从运行时的角度来看,如果函数是内联的并且在同一个编译单元中定义,并且编译器不会展开循环本身,并且如果代码已经在指令缓存中(我不知道月相,我仍然认为它不应该有任何明显的影响)第二个可能稍微快一些。

如您所见,要使其最快有很多条件,因此您不应该那样做。在您的程序中可能还有许多其他参数需要优化,它们对代码速度的影响要比这个参数大得多。任何会影响程序算法复杂性的更改都会产生更大的影响。更一般地说,任何不影响算法复杂性的代码更改都可能是过早的优化。

如果你真的想确定,测量。在 x86 上,您可以使用我在 this question 中使用的那种技巧得到一个相当准确的测量。诀窍是读取计算所用周期数的处理器寄存器。该问题还说明了代码优化问题如何变得棘手,即使对于非常简单的问题也是如此。

关于c - 以下哪项会更有效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3885480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com