我只是想知道如果在程序中使用函数可以加快执行时间?
说,我有简单的二进制搜索程序
#include <stdio.h>
int main()
{
int c, first, last, middle, n, search, array[100];
scanf("%d",&n);
for ( c = 0 ; c < n ; c++ )
scanf("%d",&array[c]);
scanf("%d",&search);
first = 0;
last = n - 1;
middle = (first+last)/2;
while( first <= last )
{
if ( array[middle] < search )
first = middle + 1;
else if ( array[middle] == search )
{
printf("%d found at location %d.\n", search, middle+1);
break;
}
else
last = middle - 1;
middle = (first + last)/2;
}
if ( first > last )
printf("Not found! %d is not present in the list.\n", search);
return 0;
}
使用函数的相同程序。
我刚刚添加了功能
int binarysearch(int *array,int m,int n)
{
int l,u,mid;
l=0,u=n-1;
while(l<=u)
{
mid=(l+u)/2;
if(m==a[mid])
{
c=1;
break;
}
else if(m<a[mid])
{
u=mid-1;
}
else
l=mid+1;
}
return mid;
}
代码只是为了理解目的!
现在哪个会跑得更快?使用函数或迭代程序编程?我一般不会谈论任何具体的计划。
答案 0 :(得分:7)
函数通过编码逻辑一次而不是重复几次,可以使代码更快,从而减少代码大小,从而提高CPU缓存的使用率。函数通过复制参数和隐藏优化信息,可以使代码变慢。可以内联某些功能以消除这些缺点。有这么多变量你真的无法概括。
在有助于使代码可读,可维护和可重复使用时使用函数。
答案 1 :(得分:2)
现在哪个会跑得更快?
你可以通过测量找出...但不要打扰。您应该问自己的更相关的问题是“哪个更具可读性?”和“哪个更容易维护?”。请考虑您可能需要在代码中的多个位置进行二进制搜索。