Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/68: Рейтинг темы: голосов - 68, средняя оценка - 4.96
109 / 36 / 3
Регистрация: 08.08.2009
Сообщений: 134

Qt и время выполнения

11.04.2012, 12:08. Показов 14116. Ответов 16
Метки нет (Все метки)

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

C++ (Qt)
1
2
3
4
5
6
QTime timer;
timer.start();
--
--
--
timer.elapsed()
Но он возвращается значение в миллисекундах и не всегда коректно(мне так кажется). Явно такие вещи уже давно есть, а вилосипед изобретать не очень хочтся.

Заранее спасибо за ответы)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2012, 12:08
Ответы с готовыми решениями:

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

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

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

16
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
11.04.2012, 12:33
Посмотри QTestLib
1
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
11.04.2012, 12:35
flack, А тебе в чем время измерять надо? С какой точностью и для каких целей?
1
109 / 36 / 3
Регистрация: 08.08.2009
Сообщений: 134
11.04.2012, 12:44  [ТС]
Цитата Сообщение от vitaly1981 Посмотреть сообщение
flack, А тебе в чем время измерять надо? С какой точностью и для каких целей?
тот пример, что я привёл - там в миллисекундах мереется, но на участках кода он мне 0 отдаёт чаще всего, те одно из двух либо эти участки не тормозят, либо нужно что-то поточнее.
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
11.04.2012, 12:52
flack, Значит так.
1. Миллисекунда это действительно не так уж и мало, поэтому 0 вполне может быть.
2. Периодически твоя программа передает управление операционной системе, а операционка передает его другим программам. В windows, время через которое твоя программа получит управление назад, равно в среднем 30 миллисекундам.
Отсюда делай выводы чего стоит точность больше 30 миллисекунд....

Но есть выход! Если уж очень надо!
1. Не передавать управление системе, все время работы тестируемого кода
2. Время считать по тикам процессора.
1
109 / 36 / 3
Регистрация: 08.08.2009
Сообщений: 134
11.04.2012, 14:52  [ТС]
Я вроде время операционке не отдаю, у меня ДОС приложение.
Да, наверное 0 мс - это всё таки нормально для выполнения.

Я кстати думал о тиках процессора, но если мне придётся тестироваться на разных машинах, то и тики там будут немного разные и их надо пересчитывать и я не знаю как Но думаю обойдусь тем что есть. Всем спасибо за ответы.
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
11.04.2012, 15:38
flack, Ты под DOS работаешь или все таки приложение просто консольное?
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
11.04.2012, 15:40
Цитата Сообщение от vitaly1981 Посмотреть сообщение
flack, Ты под DOS работаешь или все таки приложение просто консольное?

Не по теме:

не цепляйся к словам :D

0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
11.04.2012, 15:45
Чистый, Не, ну тут реальная разница есть....мало ли, вдруг реально под DOS.....

Добавлено через 3 минуты
flack, Если приложение консольное, но под windows, то управление все равно отдается )
Ты это делаешь не обязательно явно, отдают управление некоторые функции, в том числе timer.start();
0
109 / 36 / 3
Регистрация: 08.08.2009
Сообщений: 134
12.04.2012, 13:07  [ТС]
Цитата Сообщение от vitaly1981 Посмотреть сообщение
Чистый, Не, ну тут реальная разница есть....мало ли, вдруг реально под DOS.....

Добавлено через 3 минуты
flack, Если приложение консольное, но под windows, то управление все равно отдается )
Ты это делаешь не обязательно явно, отдают управление некоторые функции, в том числе timer.start();
Я имел ввиду консольное приложение - просто слово из головы вылетело
Тут не согласен, скорее ОС сама блокирует процесс и забирает время, но это нормально и такое делается во всех ОС в которых больше двух потоков. А вот timer.start(); я не знаю как на низком уровне это в Qt реализовано, либо функция с устройства или с регистра считывает, либо действительно управление забирается полностью.
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
12.04.2012, 13:15
flack, Я говорю не скорее или наверное, а так и есть на самом деле. Никто у тебя управление забрать не может. И я делал программные модули, которые управление не возвращали в течении выполнения определенных процедур, и это точно! И от количества потоков это не зависит! Правда если управление не возвращаешь, то проц почти на 100 процентов грузится.

Единственное, твой процесс будет разделять процессорное время с системными задачами, но там, как я понимаю разделение не через диспетчер, а на уровне процессора. И в этом случае никаких задержек ты не почувствуешь.

Добавлено через 49 секунд
flack, Все таймеры работают через системы сообщений, а это 100% передача управления.
0
109 / 36 / 3
Регистрация: 08.08.2009
Сообщений: 134
12.04.2012, 16:28  [ТС]
А, если тики выбирать, то они не будут через систему сообщений работать?
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
12.04.2012, 17:06
flack, Нет, если через API получать информацию о тиках процессора, то никому управление передаваться не будет. Я работал с железками, для которых нужно было время подгадать с точностью да миллисекунды.
Если надо, то могу написать как тики считать.
0
109 / 36 / 3
Регистрация: 08.08.2009
Сообщений: 134
12.04.2012, 17:21  [ТС]
Если не трудно. для общего развития было бы очень полезно.
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
13.04.2012, 06:02
завтра найду исходники

Добавлено через 12 часов 40 минут
Вот таймер с использованием winAPI, который не передает управление и отсчитывает нужное время в миллисекундах в зависимости от частоты процессора. Тут он просто ждет нужное количество миллисекунд не позволяя забрать управление. На его основе можно делать таймеры для расчета точного времени выполнения кода.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void WaitTimer(int time)
{
    int period=0;
    LARGE_INTEGER  milsec1;
    LARGE_INTEGER  milsec2;
    QueryPerformanceCounter(&milsec1);
    LARGE_INTEGER  tactInsec;
    int tactInMicsec;
    QueryPerformanceFrequency(&tactInsec);
    tactInMicsec=tactInsec.QuadPart/1000;
    while(period<time)
    {
        QueryPerformanceCounter(&milsec2);
        period=milsec2.QuadPart/tactInMicsec-milsec1.QuadPart/tactInMicsec;
    }
}
1
109 / 36 / 3
Регистрация: 08.08.2009
Сообщений: 134
13.04.2012, 08:58  [ТС]
Спасибо за код, надеюсь получится его от winAPI отвязать
0
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
13.04.2012, 18:05
повторю, сказанное выше. в Qt есть специальный модуль QTestLib, в котором помимо прочего есть кросс-платформенные средства для замеров скорости выполнения.

кроме того, есть отдельные средства профайлинга, которые дают гораздо больше информации. вроде какой-то профайлер даже в Qt Creator есть...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2012, 18:05
Помогаю со студенческими работами здесь

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

Время выполнения
Здравствуйте. Столкнулся с выходом за рамки работы программы. Решил ее изменив немного цикл, но не понял, почему так получается. Прошу вас...

Время выполнения
Скажите, как я могу сравнить время выполнения 2 функций? Желательно сразу готовый код.

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

Время ожидания выполнения истекло. Время ожидания истекло до завершения операции, или сервер не отвечает
Всем доброго времени суток! Имею самописную программку, которая на основании отмеченных пользователем критериев генерирует скрипт и...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
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