Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2015, 10:14   #1
taras-proger
Подтвердите свой е-майл
 
Регистрация: 12.11.2014
Сообщений: 470
По умолчанию Как получить текущее время?

Задача - измерить интервал времени между двумя вызовами функции, при этом необходимо разрешение выше секундного. Соотносить показания часов со временем суток, или со временем, прошедшим с момента включения, не нужно.
taras-proger вне форума Ответить с цитированием
Старый 27.12.2015, 10:22   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

GetTickCount
QueryPerformanceCounter

Но правильней всего воспользоваться профайлером.
waleri вне форума Ответить с цитированием
Старый 27.12.2015, 10:29   #3
taras-proger
Подтвердите свой е-майл
 
Регистрация: 12.11.2014
Сообщений: 470
По умолчанию

Не очень понял, в чём измеряет время lpPerformanceCount. В тактах процессора? Или в чём? Интервал времени между вызовами надо всё таки выразить в секундах и долях секунды. Как?
Цитата:
Но правильней всего воспользоваться профайлером.
Ошибочней всего, а не правильней. Мне надо не сравнить долю процессорного времени, занятого каждой функцией, для выбора функции-кандидата на оптимизацию, а измерять интервалы времени между вызовами одной функции. Конченный юзверь же не будет профайлить софтину и вручную вводить интервалы.

Последний раз редактировалось taras-proger; 27.12.2015 в 16:51.
taras-proger вне форума Ответить с цитированием
Старый 27.12.2015, 11:18   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Не очень понял, в чём измеряет время lpPerformanceCount. В тактах процессора? Или в чём? Интервал времени между вызовами надо всё таки выразить в секундах и долях секунды. Как?
Т.е. мсдн вы таки не сподобились прочитать?..
Код:
LARGE_INTEGER StartingTime, EndingTime, ElapsedMicroseconds;
LARGE_INTEGER Frequency;

QueryPerformanceFrequency(&Frequency); 
QueryPerformanceCounter(&StartingTime);

// Activity to be timed

QueryPerformanceCounter(&EndingTime);
ElapsedMicroseconds.QuadPart = EndingTime.QuadPart - StartingTime.QuadPart;


//
// We now have the elapsed number of ticks, along with the
// number of ticks-per-second. We use these values
// to convert to the number of elapsed microseconds.
// To guard against loss-of-precision, we convert
// to microseconds *before* dividing by ticks-per-second.
//

ElapsedMicroseconds.QuadPart *= 1000000;
ElapsedMicroseconds.QuadPart /= Frequency.QuadPart;
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
текущее время (системное время ) Sirk0 Общие вопросы Delphi 27 07.03.2015 17:52
Как вставить текущее время в окно программы? toxid13 Помощь студентам 4 17.06.2011 18:59
Как в Delphi узнать текущее UTC время (now)? Anfall Общие вопросы Delphi 6 28.10.2010 14:13
Текущее время Aндрей Помощь студентам 1 08.05.2009 14:01
Как сделать так, чтобы в TLabel отображались текущее системное время? Bill Gates Общие вопросы Delphi 3 03.01.2008 01:12