Страница: 1 | 2 | 3 |
Вопрос: Системное время в мс. Возможно?
Добавлено: 29.10.05 20:03
Автор вопроса: Tamplier | ICQ: 298742928
Товарищи программеры! Мне необходимо какнить вынуть время в мс, независящее от процесса программы для недлительного процесса. Возможно ли это (не удивлюсь, что нужно апи)? (вб6)
Ответы
Всего ответов: 45
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 29.10.05 20:04
Ещё раз, пожалуйста.
Номер ответа: 2
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #2
Добавлено: 29.10.05 22:32
Ничего не понял.
Но суть вроде уловил. Надо часы считывать с точностью до миллисекунд. Честно говоря, я не представляю, как именно это сделать.
Но это как правило можно обойти. Можно узнать, зачем понадобилось текущее время с точностью до миллисекунд? Может я подскажу, как обойтись без этого.
Номер ответа: 3
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #3
Добавлено: 30.10.05 00:06
Вроде без проблем можно с точностью до 100 нс, вот только за какой период? От рождества Христова, или от дня рождения Билли, или вообще от начала времён?
Номер ответа: 4
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #4
Добавлено: 30.10.05 12:13
А где-же автор?
Напиши чето типа, для одной секунды - столькото милисекунд и поставь в таймер с интервалом 1.
Кстати, в таймере интервал в милисекундах, и никаких Api.
Номер ответа: 5
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #5
Добавлено: 30.10.05 14:06
Timer возращает подобие миллисекунд
Номер ответа: 6
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #6
Добавлено: 30.10.05 19:13
что правда, то правда...
Номер ответа: 7
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #7
Добавлено: 31.10.05 11:02
Для процесса можно GetProcessTimes
Для измерения промежутка времени - две GetTickCount.
Номер ответа: 8
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #8
Добавлено: 31.10.05 13:21
GetTickCount тоже возвращает подобие миллисекунд. Реальное разрешение у него где-то 15мс.
Чтобы получить разрешение до миллисекунд, используйте мультимедиа таймеры (TimeBeginPeriod, TimeGetTime, TimeEndPeriod). Как получить еще больше точность - простите, не знаю.
Где же автор вопроса?..
Номер ответа: 9
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #9
Добавлено: 31.10.05 13:44
Воспользуйся сначала GetSystemTimeAdjustment.
Номер ответа: 10
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #10
Добавлено: 31.10.05 13:45
Пардон, SetSystemTimeAdjustment, конечно
Номер ответа: 11
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #11
Добавлено: 31.10.05 13:53
QueryPerformanceCounter
RDTSC - самый точный таймер
Номер ответа: 12
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #12
Добавлено: 31.10.05 19:24
Так. По важности. Время должно отсчитываться не зависимо от программы. Идет цикл, во время которого на таймер упраление не переходит. Посему timer и подобные фичи не прокатят. Далее нуна отследить время в мс небольшого процесса. Точнее - сортировка одномерного массива из чисел. Количество элементов до 99тыс. Нухно очень точно высчитать потому что надо сравнить несколько различных вариантов сортировки. Вот.
RDTSC - самый точный таймер
Номер ответа: 13
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #13
Добавлено: 31.10.05 19:57
Т.е ты хочешь создать процесс специально для определения времени сортировки? в таком случае в погрешность добавится время на создание процесса. А так как массив у тебя маленький и времени на его сортировку нужно немного, то доля погрешности будет большая.
Такого рода измерения не производят с отображением времени в мс. Так как сами методы получения времени и его калькуляции вносят достаточно большую погрешность. Обычно сравнения алгоритмов производят с rdtsc, которая ни библиотекой, ни апи-функцией не является. Это команда процессора, по которой содержимое внутреннего счётчика тактов процессора передаётся в пару регистров eax/edx. Вызывая rdtsc перед началом и после окончания работы алгоритма, можно вычтя из последнего первое показание счётчика, определить, сколько тактов было затрачено на выполнение кода. Но на VB такие вещи не делаются. На це или на дельфи, а лучше на ассемблере.
А вообще, не мучайся, возьми алгоритм quick sort и пользуй его.
Номер ответа: 14
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #14
Добавлено: 31.10.05 20:14
Timer - не объект, а функция.
dim t as long, i as long
t=gettickcount
for i=1 to 10
'сортировать один и тот же массив 10 раз.
next
t=gettickcount-t
t=t/10
Номер ответа: 15
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #15
Добавлено: 31.10.05 20:41
И что это будет? Время сортировки уже упорядоченного (сортированного) массива ))