在程序中使用函数会加快执行速度吗?

时间:2014-11-03 12:05:37

标签: c++ c performance

我只是想知道如果在程序中使用函数可以加快执行时间?

说,我有简单的二进制搜索程序

#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;
}

代码只是为了理解目的!

现在哪个会跑得更快?使用函数或迭代程序编程?我一般不会谈论任何具体的计划。

2 个答案:

答案 0 :(得分:7)

函数通过编码逻辑一次而不是重复几次,可以使代码更快,从而减少代码大小,从而提高CPU缓存的使用率。函数通过复制参数和隐藏优化信息,可以使代码变慢。可以内联某些功能以消除这些缺点。有这么多变量你真的无法概括。

在有助于使代码可读,可维护和可重复使用时使用函数。

答案 1 :(得分:2)

  

现在哪个会跑得更快?

你可以通过测量找出...但不要打扰。您应该问自己的更相关的问题是“哪个更具可读性?”和“哪个更容易维护?”。请考虑您可能需要在代码中的多个位置进行二进制搜索。