Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ стеки http://www.cyberforum.ru/cpp-beginners/thread956637.html
создать файл записей с полями: фамилия, возраст. за один просмотр файла вывести фамилии наиболее старых людей.
C++ Вычислить среднее арифметическое элементов списка целых чисел числить среднее арифметическое элементов списка целых чисел и удалить все элементи больше него http://www.cyberforum.ru/cpp-beginners/thread956634.html
объектный стиль C++
помогите выполнить такую задачу: у нас есть файл со списком программ-вирусов и объекты, которые они могут поражать, нам нужно получить совокупность объектов, которые может поражать заданное...
Проблемы с русскими символами C++
#include <iostream> #include <string.h> #include <locale.h> int main() { setlocale(LC_ALL, "Russian"); char eng="abcdefghijklmnopqrstuvwxyz\0"; char...
C++ В строке заменить все двоеточия точкой с запятой и посчитать количество замен http://www.cyberforum.ru/cpp-beginners/thread956615.html
В строке заменить все двоеточия (:) точкой с запятой (;) и посчитать количество замен. Перенесено из раздела Turbo Pascal
C++ Возвращение к предыдущему элементу Есть ли функция аннологичная функции .unget() для переменных типа string ? подробнее

Показать сообщение отдельно
Fyret
186 / 172 / 13
Регистрация: 30.07.2013
Сообщений: 359
17.09.2013, 22:05
Пардон за многа букаф, но у меня есть готовый класс.

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;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.