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

Как пользоваться функцией gettime() - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.80
4classic4
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 21
09.02.2014, 20:29     Как пользоваться функцией gettime() #1
Добрый вечер! Кто бы мог подробно объяснить как работает функция gettime(), откуда взять конечное и начальное время, как определить разность? Требуется определить время работы алгоритма. Еще я плохо знаком со структурами.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
09.02.2014, 21:08     Как пользоваться функцией gettime() #2
4classic4, тут нормально написано
Megabar
22 / 22 / 3
Регистрация: 01.12.2013
Сообщений: 93
09.02.2014, 21:49     Как пользоваться функцией gettime() #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
4classic4, попробуйте воспользоваться функцией: clock_t clock (void);
Пример из http://www.cplusplus.com/reference/ctime/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;
}
4classic4
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 21
09.02.2014, 21:50  [ТС]     Как пользоваться функцией gettime() #4
Цитата Сообщение от metaluga145 Посмотреть сообщение
4classic4, тут нормально написано
Спасибо. Позже также нашел эту статью. И еще вопрос можно ли с помощью функции clock() добиться результата в миллисекундах, а не в секундах.
Megabar
22 / 22 / 3
Регистрация: 01.12.2013
Сообщений: 93
09.02.2014, 21:51     Как пользоваться функцией gettime() #5
4classic4, да, код выше выдает результат
Код
Calculating...
The number of primes lower than 100,000 is: 9592
It took me 143 clicks (0.143000 seconds).
4classic4
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 21
09.02.2014, 21:55  [ТС]     Как пользоваться функцией gettime() #6
Megabar, спасибо за оперативный ответ.

Добавлено через 2 минуты
Цитата Сообщение от Megabar Посмотреть сообщение
4classic4, да, код выше выдает результат
Код
Calculating...
The number of primes lower than 100,000 is: 9592
It took me 143 clicks (0.143000 seconds).
Хотя по википедии - говорится, что в секундах(

lock_t clock(void)
Возвращает время, измеряемое процессором в тактах от начала выполнения программы, или −1, если оно не известно. Пересчет этого времени в секунды выполняется по формуле:
clock() / CLOCKS_PER_SEC
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
09.02.2014, 21:56     Как пользоваться функцией gettime() #7
как вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <Windows.h>
#include <time.h>
 
using namespace std;
 
int main() {
    long t1 =- clock();
    Sleep(100);//задержка вместо вашего кода для тестирования 100 милисекунд
    t1+= clock();
    cout << t1 << endl;//ответ в милисекунд
    system ("pause");
    return 0;
}
Хотя Megabar, это и предложил в принципе)))

Добавлено через 16 секунд
как вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <Windows.h>
#include <time.h>
 
using namespace std;
 
int main() {
    long t1 =- clock();
    Sleep(100);//задержка вместо вашего кода для тестирования 100 милисекунд
    t1+= clock();
    cout << t1 << endl;//ответ в милисекунд
    system ("pause");
    return 0;
}
Хотя Megabar, это и предложил в принципе)))
Megabar
22 / 22 / 3
Регистрация: 01.12.2013
Сообщений: 93
09.02.2014, 22:02     Как пользоваться функцией gettime() #8
Цитата Сообщение от 4classic4 Посмотреть сообщение
Хотя по википедии - говорится, что в секундах(
все верно
C
1
clock() / CLOCKS_PER_SEC
даст ответ в секундах. возвращаемое значение clock() в разных системах считается поразному поэтому нужно поделить на константу CLOCKS_PER_SEC, но ответ можно привести к типу float

Добавлено через 1 минуту
4classic4, см. определение типа clock_t
4classic4
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 21
09.02.2014, 22:12  [ТС]     Как пользоваться функцией gettime() #9
Функция clock() возвращает значение, которое приблизительно соответствует времени работы вызывающей программы. Для преобразования этого значения в секунды нужно разделить его на значение CLOCKS_PER_SEC.

Добавлено через 6 минут
Цитата Сообщение от Megabar Посмотреть сообщение
все верно
C
1
clock() / CLOCKS_PER_SEC
даст ответ в секундах. возвращаемое значение clock() в разных системах считается поразному поэтому нужно поделить на константу CLOCKS_PER_SEC, но ответ можно привести к типу float

Добавлено через 1 минуту
4classic4, см. определение типа clock_t
тут почитал, интересно, но все равно ответ в секундах.
Megabar
22 / 22 / 3
Регистрация: 01.12.2013
Сообщений: 93
09.02.2014, 22:27     Как пользоваться функцией gettime() #10
Цитата Сообщение от 4classic4 Посмотреть сообщение
тут почитал, интересно, но все равно ответ в секундах.
да ответ в секундах, но что вам мешает умножить это дело на 1000

Добавлено через 3 минуты
4classic4, если возможности стандартной библиотеки вам недостаточно, воспользуйтесь функцией ОС GetTickCount()

Добавлено через 5 минут
4classic4, посмотрите https://ideone.com/AE3dRI вывод
4classic4
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 21
09.02.2014, 22:28  [ТС]     Как пользоваться функцией gettime() #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <ctime>
#include <windows.h>
using namespace std;
int main () {
setlocale(LC_ALL, "Russian");
clock_t t1;
t1 =clock();
    for (int i=0; i<=6000000; i++){
        _asm { 
            mov ax, 4;
        }
    }
    t1=clock()-t1;
 
    cout <<((float)t1)/CLOCKS_PER_SEC<< endl;//ответ в секунадах
    system ("pause");
    return 0;
}
вот написал, на экране выводится 0.029 - то есть 2.9 миллисекунды, я правильно понял?))
Megabar
22 / 22 / 3
Регистрация: 01.12.2013
Сообщений: 93
09.02.2014, 22:30     Как пользоваться функцией gettime() #12
Цитата Сообщение от 4classic4 Посмотреть сообщение
вот написал, на экране выводится 0.029 - то есть 2.9 миллисекунды, я правильно понял?))
1 с = 1000 мс
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2014, 22:33     Как пользоваться функцией gettime()
Еще ссылки по теме:

Написать аналог процедуры Insert. Процедурой Delete и функцией Copy не пользоваться C++
Почему выдает ошибку с функцией gettime C++
Как пользоваться функцией rand()? C++

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

Или воспользуйтесь поиском по форуму:
4classic4
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 21
09.02.2014, 22:33  [ТС]     Как пользоваться функцией gettime() #13
Цитата Сообщение от Megabar Посмотреть сообщение
1 с = 1000 мс
То есть 29 миллисекунд, спасибо)
Yandex
Объявления
09.02.2014, 22:33     Как пользоваться функцией gettime()
Ответ Создать тему
Опции темы

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