Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.12.05;
Скачать: [xml.tar.bz2];

Вниз

Замерять время выполнения процедуры в мс.   Найти похожие ветки 

 
ZV ©   (2010-09-14 10:59) [0]

Задача такая, процедура ищет нужные данные в массиве,  хочу, замерять за какое время процедура обработает массив. Надо что то типа такого – вход в процедуру запуск таймера, поиск по массиву, получение результата ,остановка таймера, вывод времени выполнения процедуры.
Что для этого можно использовать? Таймер, выставить переполнение 1мс и по событию увеличивать переменную. Потом посмотреть её значения.

Или для такой задачи используются другие методы?
И ещё к этому один вопрос.
Программа  по Ethernet передает пакет и получает ответ, сейчас для определения времени я использую TimeToStr(Time) но в этой функции максимальное разрешение в секундах, как сделать ,  что бы я видел минуты, секунды, миллисекунды.


 
Сергей М. ©   (2010-09-14 11:05) [1]


> как сделать ,  что бы я видел минуты, секунды, миллисекунды


Использовать FormatDateTime() вместо TimeToStr()


 
Jeer ©   (2010-09-14 11:10) [2]


> хочу, замерять за какое время процедура обработает массив


1. GetTickCount - если достаточно разрешения 10-20 мс
2. QueryPerfomanceCounter
3. RDTSC


 
И. Павел ©   (2010-09-14 11:51) [3]

> [0] ZV ©   (14.09.10 10:59)

Наверное, точнее и правильнее выполнить функцию много раз, и получить среднее время выполнения функции, поделив общее время на число вызовов. При этом, если нужно, сперва можно случайно сгенерировать входные данные для всех вызовов, чтобы получить усреднение и по ним.


 
12 ©   (2010-09-14 12:13) [4]

Удалено модератором


 
Anatoly Podgoretsky ©   (2010-09-14 12:24) [5]

> ZV  (14.09.2010 10:59:00)  [0]

Не проблема, только таймер не применим, в таймере нет информации о времени,
он не для этого.
Только легче мерить в 100 наносекундных интервалах, чем в миллисекундных -
использовать QueryPerfomanceCounter или еще более точный RDTSC доли
наносекунды.


 
Anatoly Podgoretsky ©   (2010-09-14 12:26) [6]

Посмотреть это не цель, а цель не обозначено. Может вообще потребуются атомные часы.


 
Anatoly Podgoretsky ©   (2010-09-14 12:27) [7]

Ну посмотрел, что 1,5 миллисекнды и что?


 
brother ©   (2010-09-14 12:28) [8]

> Может вообще потребуются атомные часы.

ИМХО, тут GetTickCount подойдет...


 
ZV ©   (2010-09-14 12:54) [9]


> Ну посмотрел, что 1,5 миллисекнды и что?

В общем дело обстоит так- Есть база готовых ответов (массив) процедура ищет в нем  ответ к конкретной задаче. Ответы в в массив поступаю из другого  ПК. Время расчета и ответа другого ПК остается неизменным, константа.  
Так как массив ответов нарастает до определенного уровня то естественно время поиска в нем будет нарастать. Так вот для этого мне и нужен контроль времени поиска в массиве , и когда он превысит время ответа другого ПК, то смысл поиска в массиве отпадает потому что  быстрей быстрей получить ответ от другого ПК чем найти его в массиве


 
Anatoly Podgoretsky ©   (2010-09-14 12:54) [10]

Но автор точно не говорит, если нужна точность в миллисекунд, то пусть забудет с данной функцией.


 
Anatoly Podgoretsky ©   (2010-09-14 12:56) [11]

> ZV  (14.09.2010 12:54:09)  [9]

И сколько этот определенный уровень?


 
И. Павел ©   (2010-09-14 13:01) [12]

> Так как массив ответов нарастает до определенного уровня
> то естественно время поиска в нем будет нарастать.

Можно использовать какие-нибудь методы, ускоряющие поиск. Например двухмерный массив, элемент которого mas["а", "в"] хранит адрес, по которому начинают идти строки "ав*" и т.д., или выбрать что-нибудь еще.


 
ZV ©   (2010-09-14 13:07) [13]


> И сколько этот определенный уровень?

Это максимальное количество  задач.  Максимальный уровень когда в базе есть ответы на вес задачи. Вопрос в что быстрей найти ответ в базе или пускай другой ПК подсчитает и ответит.


 
Anatoly Podgoretsky ©   (2010-09-14 13:26) [14]

> ZV  (14.09.2010 13:07:13)  [13]

Тогда считай 100 ns или hardware тики, никакие тебе милли/микросекунды не
нужны.


 
ZV ©   (2010-09-14 13:29) [15]


> Anatoly Podgoretsky

Спасибо , так и сделаю


 
ZV ©   (2010-09-14 14:07) [16]

Еще забыл спросить. Мне нужно что бы событие произошло допустим в 24.00.
Мне что постоянно проверять  Time пока не будет совпадения? Хотелось бы так- что задал время события и забыл.


 
И. Павел ©   (2010-09-14 14:23) [17]

> Хотелось бы так- что задал время события и забыл.

Можно запланировать запуск программы в 24:00. Можно просто sleep на весь оставшийся интервал до 24 часов - у меня так одна программка работает - ждет 9 часов и запускается довольно точно. А чтобы выполнять во время sleep другие действия, то можно пустить его в отдельном потоке.


 
Плохиш ©   (2010-09-14 14:28) [18]


> А чтобы выполнять во время sleep другие действия, то можно
> пустить его в отдельном потоке.

Там ещё и таймеры есть.


 
Anatoly Podgoretsky ©   (2010-09-14 15:41) [19]

> ZV  (14.09.2010 14:07:16)  [16]

Через три года.


 
Anatoly Podgoretsky ©   (2010-09-14 15:42) [20]

Какое это имеет отношение к времени замера?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.12.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.003 c
2-1284382841
Delphi
2010-09-13 17:00
2010.12.05
Приведение типов в методах TAction


2-1284521187
03111978
2010-09-15 07:26
2010.12.05
Помогите раскрасить ComboBox


15-1282555120
Игорь Шевченко
2010-08-23 13:18
2010.12.05
Это интересно - журнал по Delphi


15-1283018286
KuJIoBaT
2010-08-28 21:58
2010.12.05
Поиск в компьютере


2-1284365809
zmxncbv
2010-09-13 12:16
2010.12.05
Модальные формы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский