Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
SadiQ228
9 / 9 / 6
Регистрация: 16.12.2016
Сообщений: 303
#1

Как засечь время выполнения функции? - C (СИ)

02.02.2017, 15:41. Просмотров 728. Ответов 10
Метки нет (Все метки)

Упражнение 3.1 K&R
В нашей программе бинарного поиска внутри цикла осуществляются две проверки, хотя
могла быть только одна (при увеличении числа проверок вне цикла). Напишите программу, предусмотрев в
ней одну проверку внутри цикла. Оцените разницу во времени выполнения.
как новичку без серьезных описаний и дополнений кода засечь время выполнения функции? работаю в QT
http://www.cyberforum.ru/c/thread1012426.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2017, 15:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как засечь время выполнения функции? (C (СИ)):

Как ограничить время выполнения программы?
Добрый день! Задали написать программу, следующего содержания: "Для...

Как измерить время выполнения программы с использованием RDTSC
Мне нужно используя RDTSC (как я понял, это ассемблерной вставкой делать нужно)...

Мьютексы-потоки: Как задать время выполнения потока
Подскажите пожалуйста насчет следующих вопросов, сам не разобрался. 1. Как...

Измерить время выполнения сортировки
Всем привет) Хелпаните с задачей: Измерить время выполнения сортировки(в...

Подсчитать время выполнения сортировки
Нужно посчитать за какой время выполнится стандартная сортировка и сортировка,...

10
quwy
Native x86
3333 / 2180 / 649
Регистрация: 13.02.2013
Сообщений: 7,239
02.02.2017, 16:02 #2
Взять системное время до запуска, и отнять его от времени после завершения?
0
SadiQ228
9 / 9 / 6
Регистрация: 16.12.2016
Сообщений: 303
02.02.2017, 16:16  [ТС] #3
подробнее хотя бы немного какая функция за это из какой библиотеки отвечает?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7981 / 4862 / 1423
Регистрация: 29.11.2010
Сообщений: 13,236
02.02.2017, 16:37 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <time.h>
#include <windows.h>
 
int main(void)
{
    time_t start = time(NULL);
 
    /* some work */
    Sleep(3000);
 
    printf("Seconds: %d\n", time(NULL) - start);
    return 0;
}
3
Catstail
Модератор
23528 / 11636 / 2034
Регистрация: 12.02.2012
Сообщений: 18,976
02.02.2017, 18:08 #5
Если нужна хорошая точность, нужно использовать системную функцию getTickCount
1
SadiQ228
9 / 9 / 6
Регистрация: 16.12.2016
Сообщений: 303
02.02.2017, 19:22  [ТС] #6
я не совсем понял по описанию как ей посчитать, для примера есть код из задачи, две функции, как засечь каждую из них?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#define MAX 100
int binsearch1(int x, int n, int v[]);
int binsearch2(int x, int n, int v[]);
int main()
{
  int n = MAX;
  int x = 33;
  int v[MAX];
  for (int i = 0; i<MAX; i++){
      v[i]=i;
    }
  printf ("%d\n",binsearch1(x,n,v));
  printf ("%d\n",binsearch2(x,n,v));
      return 0;
}
int binsearch1(int x, int n, int v[])
{
  int min, mid, max;
  min = 0;
  max = n-1;
  while (min<=max){
      mid = (min+max)/2;
      if (x<v[mid]){
          max = mid-1;
        }
      else if (x>v[mid]){
          min = mid+1;
        }
      else{
          return mid;
        }
    }
  return -1;
}
int binsearch2(int x, int n, int v[])
{
  int min, mid, max;
  min = 0;
  max = n-1;
  while (min<max){
      mid = (min+max)/2;
      if (x<v[mid]){
          max = mid;
        }
      else {
          min = mid+1;
        }
    }
  return x == v[mid] ? mid : -1;
}
Добавлено через 10 минут
возможно я не верно выразился и есть какие то простые методы оценки разницы выполнения по времени
0
quwy
Native x86
3333 / 2180 / 649
Регистрация: 13.02.2013
Сообщений: 7,239
02.02.2017, 20:07 #7
Цитата Сообщение от Catstail Посмотреть сообщение
Если нужна хорошая точность, нужно использовать системную функцию getTickCount
Если уж речь про Windows и нужда действительно хорошая точность, то тогда QueryPerformanceCounter.
2
SadiQ228
9 / 9 / 6
Регистрация: 16.12.2016
Сообщений: 303
02.02.2017, 20:10  [ТС] #8
речь о Linux и точности хватит до десятых секунды)
1
quwy
Native x86
3333 / 2180 / 649
Регистрация: 13.02.2013
Сообщений: 7,239
02.02.2017, 20:12 #9
Цитата Сообщение от SadiQ228 Посмотреть сообщение
речь о Linux
Тогда см. clock_gettime.
0
Standret
2 / 2 / 5
Регистрация: 29.01.2017
Сообщений: 8
Завершенные тесты: 2
02.02.2017, 21:47 #10
Лучший ответ Сообщение было отмечено SadiQ228 как решение

Решение

зачем так сложно
вот
C
1
2
3
4
5
void function(list argument){
   clock_t time_start= clock(); 
   ///body function
   clock_t time_end = clock() - time_start;
   printf("%u", (double)time_end / CLOCKS_PER_SEC);
profit
clock() - взврощает время тактах с момента старта програми
(double)time_end / CLOCKS_PER_SEC) - преоброзование в секнуди

Добавлено через 1 минуту
вам понадобится библиотека time.h
0
SadiQ228
9 / 9 / 6
Регистрация: 16.12.2016
Сообщений: 303
02.02.2017, 23:25  [ТС] #11
во то шо надо, спасибо)
0
02.02.2017, 23:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2017, 23:25
Привет! Вот еще темы с решениями:

Измерить время выполнения программы
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;time.h&gt; main () { FILE *in;...

Задать время выполнения программы
Нужно, чтобы некоторый код выполнялся в течение 5 минут, а после выводились...

Нужно уменьшить время выполнения программы
Здравствуйте! Помогите, пожалуйста. Нужно уменьшить время выполнения программы,...

Задание размера массива после его объявления во время выполнения программы
Ребята, подскажите, как задать размер массиву во время выполнения. Я напишу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru