Форум программистов, компьютерный форум CyberForum.ru

Подсчет времени выполнения функции - C++

Восстановить пароль Регистрация
 
bi4ugan
11 / 11 / 6
Регистрация: 27.10.2014
Сообщений: 108
Завершенные тесты: 1
21.11.2014, 13:04     Подсчет времени выполнения функции #1
Делаю 2 вида сортировки, не знаю как подсчитать их время.
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <time.h>
#include <conio.h>
using namespace std;
void QSsort(int array[],int first,int last);
void SelectSort(int array[],int n);
float time1,timee;
void main()
{
    
    int d=1;
    const int j=100;
    srand(time(NULL));
    int array[j],arra[j];
    
    for(int i=0;i<j;i++)
        array[i]=rand()%100+1;
    for(int i=0;i<j;i++)
        arra[i]=rand()%100+1;
 
    
    cout<<endl<<"Array after Quick sort"<<endl;
    clock();
    QSsort(array,0,j-1);
    for(int i=0;i<j;i++)
        cout<<array[i]<<" ";
    cout<<endl<<"Array after Select Sort"<<endl;
    SelectSort(arra,j);
    for(int i=0;i<j;i++)
        cout<<arra[i]<<" ";
    cout<<endl<<"Time - "<<timee<<"  Time 1-"<<time1;;
    _getch();
}
void QSsort(int array[],int first,int last)
{
    int i=first,j=last,x=array[(first+last)/2];
    float time=0.0;
    do{
        while(array[i]<x) i++;
        while(array[j]>x) j--;
        if(i<=j){
            if(i<j){
                int tmp=array[i];
                array[i]=array[j];
                array[j]=tmp;
            }
            i++;
            j--;
        }
    }
    while(i<=j);
     timee=clock();
    if(i<last)
        QSsort(array,i,last);
    if(first<j)
        QSsort(array,first,j);
    
}
 
void SelectSort(int array[],int n){
    int count,key;
    for(int i=0;i<n-1;i++){
        count=array[i];
        key=i;
        for(int j=i+1;j<n;j++)
            if(array[j]<array[key]) key=j;
            if(key!=i){
                array[i]=array[key];
                array[key]=count;
            }
            
    }
    time1=clock();
}
Добавлено через 18 часов 11 минут
апп
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5951 / 5556 / 1787
Регистрация: 18.12.2011
Сообщений: 14,200
Завершенные тесты: 1
21.11.2014, 13:14     Подсчет времени выполнения функции #2
Пример использования clock():
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
/* clock example: frequency of primes */
#include <stdio.h>      /* printf */
#include <time.h>       /* clock_t, clock, CLOCKS_PER_SEC */
#include <math.h>       /* sqrt */
 
int frequency_of_primes (int n) {
  int i,j;
  int freq=n-1;
  for (i=2; i<=n; ++i) for (j=sqrt(i);j>1;--j) if (i%j==0) {--freq; break;}
  return freq;
}
 
int main ()
{
  clock_t t;
  int f;
  t = clock();
  printf ("Calculating...\n");
  f = frequency_of_primes (99999);
  printf ("The number of primes lower than 100,000 is: %d\n",f);
  t = clock() - t;
  printf ("It took me %d clicks (%f seconds).\n",t,((float)t)/CLOCKS_PER_SEC);
  return 0;
}
bi4ugan
11 / 11 / 6
Регистрация: 27.10.2014
Сообщений: 108
Завершенные тесты: 1
21.11.2014, 13:44  [ТС]     Подсчет времени выполнения функции #3
Сделал так же, только не могу понять в чем оно считает его?(с,мс)
у меня получается
тайм-1 тайм2 1-2
nmcf
4311 / 3732 / 1258
Регистрация: 14.04.2014
Сообщений: 14,629
21.11.2014, 14:33     Подсчет времени выполнения функции #4
22-я строка в секундах. Там же написано.
dogg12
 Аватар для dogg12
57 / 23 / 5
Регистрация: 21.02.2011
Сообщений: 506
21.11.2014, 14:46     Подсчет времени выполнения функции #5
clock()-в тактах процессора
clock()/CLOCKS_PER_SEC-в секундах
В вашем случаее, вывод в секундах.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
21.11.2014, 15:07     Подсчет времени выполнения функции #6
Цитата Сообщение от dogg12 Посмотреть сообщение
clock()-в тактах процессора
clock()/CLOCKS_PER_SEC-в секундах
В вашем случаее, вывод в секундах.
Так прикинем CLOCKS_PER_SEC на моей платформе равен 1000 значит частота моего процессора 1КГц? Что-то тут не так...
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
21.11.2014, 16:45     Подсчет времени выполнения функции #7
так то сlock() не такты процессора, а
The value returned is expressed in clock ticks, which are units of time of a constant but system-specific length (with a relation of CLOCKS_PER_SEC clock ticks per second).
AnatDenis
1 / 1 / 0
Регистрация: 29.06.2013
Сообщений: 64
21.11.2014, 17:12     Подсчет времени выполнения функции #8
Ну да-да, я эту и имел ввиду, немного некорректно передал свою мысль)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2014, 17:58     Подсчет времени выполнения функции
Еще ссылки по теме:

Подсчет времени работы программы C++
Подсчёт времени выполнения программы C++
C++ Ошибка времени выполнения (terminate)

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

Или воспользуйтесь поиском по форуму:
Mars74
1 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 31
21.11.2014, 17:58     Подсчет времени выполнения функции #9
C++ (Qt)
1
2
3
4
5
6
#include <windows.h>
int t;
t = GetTickCount();// перед началом нужной функции
/*......код.......... */
t = GetTickCount() - t; // после ее выполнения
cout<<"  Vremya raboti v ms: "<< t  <<endl; // время работы в мс
Yandex
Объявления
21.11.2014, 17:58     Подсчет времени выполнения функции
Ответ Создать тему
Опции темы

Текущее время: 18:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru