Ускоряет ли использование функций в программах выполнение?

0

Я просто хотел знать. Если использование функции в программах ускоряет время выполнения?

Скажем, у меня простая программа поиска бинарных файлов

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

Код предназначен только для понимания!

Теперь, что будет работать быстрее? Программа, использующая функцию или итеративные программы? Я вообще говорю не о какой-либо конкретной программе.

  • 3
    Как часто это зависит ...
  • 4
    Используйте функции, когда они помогают сделать код читабельным и понятным. Пофиг на их скорость. Если ваш алгоритм будет O (n), O (log n) и т. Д., То это в 999999 раз больше повлияет на скорость вашей программы.
Показать ещё 10 комментариев
Теги:
performance

2 ответа

7

Функции МОГУТ сделать код быстрее с помощью логики кодирования один раз вместо повторения несколько раз и, таким образом, уменьшить размер кода и привести к лучшему использованию кэша процессора. Функции МОЖЕТ сделать код медленнее, копируя параметры и скрывая информацию от оптимизации. Некоторые функции могут быть встроены, чтобы отменить эти недостатки. Есть так много переменных, которые вы действительно не можете сделать обобщением.

Используйте функции, когда они помогают сделать код читаемым, поддерживаемым и многоразовым.

2

Теперь, что будет работать быстрее?

Вы можете узнать, измерив... Но не беспокойтесь. Более актуальные вопросы, которые вы должны задать себе: "Что более читаемо?" и "Что легче поддерживать?". Учтите, что вам может потребоваться выполнить двоичный поиск в нескольких местах вашего кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню