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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2015, 20:35   #1
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию Что возвращает QueryPerformanceCounter?

Что возвращает QueryPerformanceCounter? Как я понял время выполнения участка кода? т.е.

Код:
QueryPerformanceCounter(t1);
sleep(1);
QueryPerformanceCounter(t2);
t3:=(t2-t1);
в t3 будет время между t1 и t2 в микросекундах?
nibufep вне форума Ответить с цитированием
Старый 30.01.2015, 20:47   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,890
По умолчанию

Цитата:
Сообщение от nibufep Посмотреть сообщение
Что возвращает QueryPerformanceCounter? Как я понял время выполнения участка кода? т.е.

Код:
QueryPerformanceCounter(t1);
sleep(1);
QueryPerformanceCounter(t2);
t3:=(t2-t1);
в t3 будет время между t1 и t2 в микросекундах?
Нет. Это будет время в попугаях. Чтобы перевести в микросекунды используй QueryPerformanceFrequency
northener вне форума Ответить с цитированием
Старый 30.01.2015, 21:15   #3
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Нет. Это будет время в попугаях. Чтобы перевести в микросекунды используй QueryPerformanceFrequency
а подробней можно как это сделать?
nibufep вне форума Ответить с цитированием
Старый 30.01.2015, 21:26   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,890
По умолчанию

Код:
var
  TicsPerSec: Int64;
  TimeInSecs: Extended;
...
  if QueryPerformanceFrequency(TicsPerSec) then TimeInSecs:=(t2-t1)/TicsPerSec;

Последний раз редактировалось northener; 30.01.2015 в 21:28.
northener вне форума Ответить с цитированием
Старый 30.01.2015, 21:50   #5
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Правильно?

Код:
var
t1,t2:Int64;
TicsPerSec: Int64;
TimeInSecs: Extended;
begin
QueryPerformanceCounter(t1);
http.GET('http://',html);
QueryPerformanceCounter(t2);
if QueryPerformanceFrequency(TicsPerSec) then TimeInSecs:=(t2-t1)/TicsPerSec;
Edit.Text:=FloatToStr(TimeInSecs);
nibufep вне форума Ответить с цитированием
Старый 30.01.2015, 21:54   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А можно глупый вопрос: Это все зачем?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.01.2015, 22:12   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,890
По умолчанию

Цитата:
Сообщение от nibufep Посмотреть сообщение
Правильно?

Код:
var
t1,t2:Int64;
TicsPerSec: Int64;
TimeInSecs: Extended;
begin
QueryPerformanceCounter(t1);
http.GET('http://',html);
QueryPerformanceCounter(t2);
if QueryPerformanceFrequency(TicsPerSec) then TimeInSecs:=(t2-t1)/TicsPerSec;
Edit.Text:=FloatToStr(TimeInSecs);
В коде ошибок нет. Но я абсолютно согласен со Stilet. Замерять время выполнения GET-запроса таким способом не имеет никакого смысла.

Хотя был не совсем прав говоря что в коде нет ошибок.
Если подразумевается что сей код это часть реальной программы, то в нём куча принципиальных ошибок. В коде присутствуют три вызова функций. В двух из них результат функции не проверяется вообще. В оставшемся, результат проверяется, но используется лишь частично.

Последний раз редактировалось Stilet; 31.01.2015 в 11:37.
northener вне форума Ответить с цитированием
Старый 31.01.2015, 08:49   #8
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Замерять время выполнения GET-запроса таким способом не имеет никакого смысла.
А как лучше это сделать?
nibufep вне форума Ответить с цитированием
Старый 31.01.2015, 11:37   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А как лучше это сделать?
Ахахах! Так проблема только в этом? Измерить скорость интернета что ли хочешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.01.2015, 12:46   #10
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

Цитата:
Сообщение от nibufep Посмотреть сообщение
А как лучше это сделать?
Код:
t:=now;
http.GET('http://',html);
t2:=IntToStr(MilliSecondsBetween(now,t));
Dmitry33RU вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что возвращает Include(); не понимаю логику pompiduskus PHP 8 15.04.2012 02:07
Нужно написать функцию, что не возвращает значения(типа процедуры на паскале) karson Общие вопросы C/C++ 2 13.03.2011 15:41
Что значит функия возвращает значение ? [iT]aNYBis Свободное общение 22 28.10.2010 03:32
Что возвращает эта функция? D[I]K Общие вопросы C/C++ 9 07.10.2009 00:32
QueryPerformanceFrequency, QueryPerformanceCounter chingiz Win Api 1 23.01.2008 10:57