【问题标题】:Does using function in programs speed up execution? [closed]在程序中使用函数会加快执行速度吗? [关闭]
【发布时间】:2014-11-03 12:05:37
【问题描述】:

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

说,我有一个简单的二分查找程序

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

代码仅用于理解目的!

现在哪个会跑得更快?使用函数或迭代程序进行编程?我说的一般不是任何特定的程序。

【问题讨论】:

  • 通常情况下,这取决于...
  • 使用有助于使代码可读和可维护的函数。不关心他们的速度。无论您的算法是 O(n)、O(log n) 等,都会对您的程序速度产生 999999 倍的影响。
  • @Blackhat002 好吧,对您的问题唯一合理的答案是,有时函数会使事情变慢,有时它会使事情变快。这不是一个非常有用的答案,但那是因为它不是一个非常有用的问题。
  • @nos 我不同意。我认为这是一个有用的问题。广泛但有用。
  • 因过于宽泛而关闭。你可以写一本关于这个主题的书。这很好地表明了这个问题太宽泛了。

标签: c++ c performance


【解决方案1】:

函数可以通过对逻辑进行一次编码而不是重复多次来加快代码速度,从而减少代码大小并提高 CPU 缓存的使用率。函数可以通过复制参数和隐藏优化信息来使代码变慢。可以内联某些函数来消除这些缺点。变量太多了,你真的无法一概而论。

使用有助于使代码可读、可维护和可重用的函数。

【讨论】:

    【解决方案2】:

    现在哪个会跑得更快?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 2015-03-06
      • 2011-09-09
      • 1970-01-01
      • 2018-05-15
      相关资源
      最近更新 更多