Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/49: Рейтинг темы: голосов - 49, средняя оценка - 4.84
 Аватар для Mayonez
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874

Измеряем время выполнения

15.08.2011, 23:45. Показов 9765. Ответов 3

Студворк — интернет-сервис помощи студентам
Иногда нужно узнать сколько времени выполняется функция или сравнить алгоритмы по скорости работы.
Вот примеры того, как это можно сделать.

->Использовать следующий класс(CTimer.rar)
Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include "CTimer.h"
 
int main()
{
    CTimer Time;
    Time.Start();
    
    /*
    код или вызов функции, время исполнения
    которой нужно измерить
    */
    
    Time.End();
    std::cout << Time.GetTimeInSeconds() 
          << " seconds" << std::endl;
    return 0;   
}
файл CTime.h из вложения нужно поместить в папку с кодом вашей программы или просто добавить в нее этот
код
#include <windows.h>

class CTimer
{
public:
CTimer()
{
QueryPerformanceFrequency(&mqFreq);
}
~CTimer() {}

void Start()
{
QueryPerformanceCounter(&mqStart);
}
void End()
{
QueryPerformanceCounter(&mqEnd);
}
double GetTimeInSeconds()
{
return (mqEnd.QuadPart - mqStart.QuadPart)/static_cast<double>(mqFreq.QuadPart);
}
private:
LARGE_INTEGER mqStart;
LARGE_INTEGER mqEnd;
LARGE_INTEGER mqFreq;
};


->Еще вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <ctime>
 
int main()
{
    const clock_t start = clock();
    
    /*
    êîä èëè âûçîâ ôóíêöèè, âðåìÿ èñïîëíåíèÿ
    êîòîðîé íóæíî èçìåðèòü
    */
    
    const double time = static_cast<double>(clock() - start) / CLOCKS_PER_SEC;
    std::cout << time << " seconds" << std::endl;
    return 0;   
}
->Используя Boost
C++
1
2
3
4
boost::posix_time::ptime start = boost::posix_time::second_clock::local_time();
//действие...
boost::posix_time::ptime end = boost::posix_time::second_clock::local_time();
std::cout << (end - start).total_seconds() << std::endl;
---
ссылка на MSDN
->предлагайте еще варианты, кроме:
1.Взять секундомер
2.Запустить программу и нажать "старт"
3.????
4.PROFIT
5
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.08.2011, 23:45
Ответы с готовыми решениями:

Задержка выполнения кода на время выполнения анимации
Пишу игру с видом пошагового боя. С каждым ходом, игрок выкладывает на доску новую фигуру. После того, как игрок выложил фигуру –...

Прогресс выполнения функции AJAX и время выполнения
Здравствуйте. Как ни странно не нашел ответа на решение своей проблемы. Есть функция, которая обрабатывается AJAX-ом на стороне сервера....

Измеряем потребление домашней техники
Приобрел измеритель решил выкладывать что сколько потребляет :-2:49 Потребление Кв\ч 0,376 Потребление мин 0,3 Ват Потребление мах...

3
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
15.08.2011, 23:50
Цитата Сообщение от Mayonez Посмотреть сообщение
предлагайте еще варианты
Вот и вот
Еще:
C++
1
2
3
4
5
6
#include<windows.h>
 
double start = GetTickCount();
///// действия
double finish = GetTickCount();
finish - start; // резалт
Для g++ еще видел такое:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
static inline unsigned long long int tick()
{
unsigned long long int d;
__asm__ __volatile__ ("rdtsc" : "=A" (d) );
return d;
}
 
int main()
{
    unsigned long long int a = 0;
    unsigned long long int b = 0;
    a=tick();
   //действия
    b=tick();
    cout<<b-a<<endl;
    return 0;
}
2
1 / 1 / 0
Регистрация: 11.12.2014
Сообщений: 116
02.05.2015, 00:11
Цитата Сообщение от asics Посмотреть сообщение
Для g++ еще видел такое
В каких единицах результат?
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
02.05.2015, 02:29
Цитата Сообщение от pety Посмотреть сообщение
В каких единицах результат?
В тактах процессора.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2015, 02:29
Помогаю со студенческими работами здесь

Измеряем свою силу воли
Главное соблюдать последовательность действий для точной оценки 1) Заходи по этой ссылке и внимательно смотрим аниме....

Получить результат выполнения скрипта perl во время выполнения скрипта bash
доброго времени суток. знатоки, нужна ваша помощь- подскажите как из bash-скрипта вызвать perl-скрипт, получить результат его выполнения и...

Время выполнения
Подскажите, как можно сделать, чтобы каждый день срабатывал определенный скрипт?

Время выполнения
Я здесь в первый раз и ещё не разобралась с форумом, дико извиняюсь если что не так. Мне нужно чтобы определялось время выполнения...

Qt и время выполнения
Всем привет, если не трудно поделитесь методами кто как замеряет время выполнения участков кода. Я нашёл на просторах такой код: ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru