![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| 46&two |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 6.2.2004 Репутация: нет Всего: нет |
дело так:
есть функция myfunction(); я хочу как можно более точно рассчитать время ее работы (имеется в виду, чистое время процесса) чем больше будет знаков после запятой, тем лучше я сейчас делаю так:
Можно ли точнее считать время???? |
|||
|
||||
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
s1=GetTickCount();
//функция s2=GetTickCount(); s4=(s2-s1); --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
В С++ есть функция подсчитывающая кол-во тактов процессора.Ща не помню,но напишу позже
-------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Artiom |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1031 Регистрация: 11.3.2003 Где: Минск\Баку Репутация: нет Всего: 17 |
Разве это не есть clock()? -------------------- Если тебя жизнь трахает, значит, ты ещё живой |
|||
|
||||
| 46&two |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 6.2.2004 Репутация: нет Всего: нет |
ну так что получается?
что clock() - это наиболее точный вариант? |
|||
|
||||
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Через GetTickCount() получаешь результат в милисекундах.
Тебе нужно ещё точнее ? --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| 46&two |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 6.2.2004 Репутация: нет Всего: нет |
конечно точнее. сотые секунды - это слишком большое зерно. ну не повторять же численный метод сто раз, особенно если его временная оценка ~O(n*n).....
тут даже тысячные - вообще говоря, не дело |
|||
|
||||
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Вообщето мили секунды это тысячные ....
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| Дрон |
|
||||||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Если пишешь для Windows, то как я уже много раз говорил:
совместно с
Дадут ИМХО лучший результат. Добавлено @ 19:25 Вот как это можно сделать:
ElapsedTime будет в секундах. Как я понял, у меня точность ~1/3500000 секунды. Это сообщение отредактировал(а) Дрон - 22.4.2004, 19:26 -------------------- Да. Именно так. |
||||||
|
|||||||
| Novich |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.4.2004 Репутация: нет Всего: нет |
GetTickCount() не всегда дает точное значение
|
|||
|
||||
| Goremika |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 2.4.2004 Репутация: нет Всего: нет |
Конечно не совсем в тему, но может функцию запускать не один раз а несколько а потом получивщееся время делить на кол-во вызовов ф-ии?
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
по-моему именно об этом и написанно -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Кстати, в Виндах заниматься измерением времени работы с большой точностью -- плохая затея. Они ж многозадачные и всё такое.
Для лучших результатов нужно поставить класс приоритета для процесса -- Realtime (реального времени). -------------------- Да. Именно так. |
|||
|
||||
| 46&two |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 6.2.2004 Репутация: нет Всего: нет |
to Dron:
Я прогнал сравнение для твоего метода измерения скорости и с тем, что использовал раньше. В чем я не уверен: в том что QueryPerformanceCounter считает строго время процесса, а не полное время работы (т.е. с учетом времени, затраченного другими процессами). Просто сравнение показало, что, например, метод, отрабатывающий за 7 секунд, оцениваетсяQueryPerformanceCounter и сlock() c разницей в ~0.05 секунды. При этом время, рассчитанное QueryPerformanceCounter всегда немного больше времени, рассчитанного cloсk(). Не ахти как много, но все же существенно, особенно если принять во внимание то, что разница в подсчетах clock() и getTickCount() составляет не более 0.001 секунды. вот такие пироги. |
|||
|
||||
| Дрон |
|
||||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
QueryPerformanceCounter считает именно полное время.
Я просто не внимательно прочитал вопрос... А для времени данного процесса есть функция (по названию догадаться можно):
Какой именно параметр тебе нужен решай сам. Дальше переведёшь время его в другой формат при помощи
Точность 100-наносекунд. -------------------- Да. Именно так. |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |