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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
#1

Использовать время (таймер) в С++ консоль - C++

17.09.2013, 21:43. Просмотров 1120. Ответов 3
Метки нет (Все метки)

Добрый вечер!

Задача такая: есть несколько сортировок (пузырьком, быстрой, шелл), нужно засечь время работы этих сортировок.

Как это сделать?

Какую функцию нужно использвоать? Может взять разницу с временем компьютера? Или использовать settimer, но пойдёт ли он на консоль и как его использовать?

Помогите, пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2013, 21:43     Использовать время (таймер) в С++ консоль
Посмотрите здесь:

Как использовать таймер C++
C++ Функция: Написать функцию next(t, t1, d), которая присваивает параметру t1 время на d секунд больше, чем время t.
C++ Программа-таймер (отсчитывает определенное время)
Как сделать, чтобы во время запуска оконного приложения не отображалась консоль(командная строка)? C++
Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). C++
C++ Как в программе использовать время и дату на компьютере
C++ Записи. Дано время t1 и время t2. Определить, сколько времени пройдет от t1 до t2
C++ Какую лучше всего в наше время использовать графическую библиотеку?
Выводить текущее время в определенные позиции консоли во время работы C++
C++ Ввести время и от него отнять системное время
C++ Неожиданное поведение программы: вместо вывода суммы чисел, на консоль всё время выводится ноль (цикл while)
C++ Как узнать кодировку вывода в консоль во время выполнения программы?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
17.09.2013, 21:46     Использовать время (таймер) в С++ консоль #2
функция time() возвращает время
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
17.09.2013, 22:05     Использовать время (таймер) в С++ консоль #3
Пардон за многа букаф, но у меня есть готовый класс.

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
#ifndef TIMER_H
#define TIMER_H
 
#include <iostream>
 
class Timer 
{
private:
    static double Hz;
 
    double UserTime;
    double SysTime;
    double RealTime;
 
    double UserElapsed;
    double SysElapsed;
    double RealElapsed;
 
public:
    Timer();
    ~Timer();
 
    void Start();
    void Continue();
    void Stop();
 
    double GetUserTime() const;
    double GetSysTime() const;
    double GetRealTime() const;
 
    friend std::ostream& operator<<(std::ostream& out, const Timer &timer);
};
 
inline double Timer::GetUserTime() const
{
    return UserElapsed;
}
 
inline double Timer::GetSysTime() const
{
    return SysElapsed;
}
 
inline double Timer::GetRealTime() const
{
    return RealElapsed;
}
 
#endif // TIMER_H

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#ifdef _WIN32
    #ifndef _WIN32_WINNT
        #define _WIN32_WINNT 0x0500
    #endif
    #include <windows.h>
#else
    #include <unistd.h>
    #include <sys/times.h>
#endif //_WIN32
 
#include <iomanip>
#include "timer.h"
 
Timer::Timer()
    : UserTime(0.0)
    , SysTime(0.0)
    , RealTime(0.0)
    , UserElapsed(0.0)
    , SysElapsed(0.0)
    , RealElapsed(0.0)
{
}
 
Timer::~Timer()
{
}
 
#ifdef _WIN32
 
double Timer::Hz = 10000000.0;
 
void Timer::Start() 
{
    UserElapsed = 0.0;
    SysElapsed = 0.0;
    RealElapsed = 0.0;
 
    ULARGE_INTEGER cTime, eTime, kTime, uTime, rTime;
 
    ::GetProcessTimes(::GetCurrentProcess(), (LPFILETIME)&cTime, (LPFILETIME)&eTime, (LPFILETIME)&kTime, (LPFILETIME)&uTime);
    ::GetSystemTimeAsFileTime((LPFILETIME)&rTime);
 
    UserTime = uTime.QuadPart/Hz;
    SysTime = kTime.QuadPart/Hz;
    RealTime = rTime.QuadPart/Hz;
}
 
void Timer::Continue() 
{
    ULARGE_INTEGER cTime, eTime, kTime, uTime, rTime;
 
    ::GetProcessTimes(::GetCurrentProcess(), (LPFILETIME)&cTime, (LPFILETIME)&eTime, (LPFILETIME)&kTime, (LPFILETIME)&uTime);
    ::GetSystemTimeAsFileTime((LPFILETIME)&rTime);
 
    UserTime = uTime.QuadPart/Hz;
    SysTime = kTime.QuadPart/Hz;
    RealTime = rTime.QuadPart/Hz;
}
 
void Timer::Stop() 
{
    ULARGE_INTEGER cTime, eTime, kTime, uTime, rTime;
 
    ::GetProcessTimes(::GetCurrentProcess(), (LPFILETIME)&cTime, (LPFILETIME)&eTime, (LPFILETIME)&kTime, (LPFILETIME)&uTime);
    ::GetSystemTimeAsFileTime((LPFILETIME)&rTime);
 
    UserElapsed += uTime.QuadPart/Hz - UserTime;
    SysElapsed += kTime.QuadPart/Hz - SysTime;
    RealElapsed += rTime.QuadPart/Hz - RealTime;
 
    UserTime = uTime.QuadPart/Hz;
    SysTime = kTime.QuadPart/Hz;
    RealTime = rTime.QuadPart/Hz;
}
 
#else
 
double Timer::Hz = double(sysconf(_SC_CLK_TCK));
 
void Timer::Start() 
{
    UserElapsed = 0.0;
    SysElapsed = 0.0;
    RealElapsed = 0.0;
 
    tms buffer;
    RealTime = times(&buffer)/Hz;
    UserTime = buffer.tms_utime/Hz;
    SysTime = buffer.tms_stime/Hz;
}
 
void Timer::Continue() 
{
    tms buffer;
    RealTime = times(&buffer)/Hz;
    UserTime = buffer.tms_utime/Hz;
    SysTime = buffer.tms_stime/Hz;
}
 
void Timer::Stop() 
{
    tms buffer;
    double t = times(&buffer)/Hz;
 
    UserElapsed += buffer.tms_utime/Hz - UserTime;
    SysElapsed += buffer.tms_stime/Hz - SysTime;
    RealElapsed += t - RealTime;
 
    UserTime = buffer.tms_utime/Hz;
    SysTime = buffer.tms_stime/Hz;
    RealTime = t;
}
 
#endif // _WIN32
 
std::ostream& operator<<(std::ostream& out, const Timer &timer) 
{
    std::ios::fmtflags flags = out.flags();
    out.flags(flags | std::ios::fixed);
    out << "  user time: " << std::setprecision(2) << timer.GetUserTime() << " sec" << std::endl;
    out << "system time: " << std::setprecision(2) << timer.GetSysTime()  << " sec" << std::endl;
    out << "  real time: " << std::setprecision(2) << timer.GetRealTime() << " sec" << std::endl;
    out.flags(flags);
    return out;
}
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.09.2013, 22:52     Использовать время (таймер) в С++ консоль #4
C++
1
2
3
4
5
6
7
8
#include <ctime>
...
clock_t t1 = clock();
 
//... тут код, время работы которого нужно замерить
 
clock_t t2 = clock();
cout << (t2 - t1 + .0) / CLOCKS_PER_SEC << endl;
Yandex
Объявления
17.09.2013, 22:52     Использовать время (таймер) в С++ консоль
Ответ Создать тему
Опции темы

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