Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: vt-dbnz.narod.ru
 Профиль | | #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
Timer возращает подобие миллисекунд ;)


:) что правда, то правда... :)

Ответить

Номер ответа: 7
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #7 Добавлено: 31.10.05 11:02
Для процесса можно GetProcessTimes
Для измерения промежутка времени - две GetTickCount.

Ответить

Номер ответа: 8
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #8
Добавлено: 31.10.05 13:21
Timer возращает подобие миллисекунд ;)

GetTickCount тоже возвращает подобие миллисекунд. Реальное разрешение у него где-то 15мс.
Чтобы получить разрешение до миллисекунд, используйте мультимедиа таймеры (TimeBeginPeriod, TimeGetTime, TimeEndPeriod). Как получить еще больше точность - простите, не знаю.

Где же автор вопроса?..

Ответить

Номер ответа: 9
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #9 Добавлено: 31.10.05 13:44
GetTickCount тоже возвращает подобие миллисекунд.

Воспользуйся сначала GetSystemTimeAdjustment.

Ответить

Номер ответа: 10
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #10 Добавлено: 31.10.05 13:45
Пардон, SetSystemTimeAdjustment, конечно

Ответить

Номер ответа: 11
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #11
Добавлено: 31.10.05 13:53
QueryPerformanceCounter
RDTSC - самый точный таймер

Ответить

Номер ответа: 12
Автор ответа:
 Tamplier



ICQ: 298742928 

Вопросов: 58
Ответов: 340
 Профиль | | #12 Добавлено: 31.10.05 19:24
Так. По важности. Время должно отсчитываться не зависимо от программы. Идет цикл, во время которого на таймер упраление не переходит. Посему timer и подобные фичи не прокатят. Далее нуна отследить время в мс небольшого процесса. Точнее - сортировка одномерного массива из чисел. Количество элементов до 99тыс. Нухно очень точно высчитать потому что надо сравнить несколько различных вариантов сортировки. Вот.
QueryPerformanceCounter
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 и подобные фичи не прокатят.

Timer - не объект, а функция.

Нухно очень точно высчитать потому что надо сравнить несколько различных вариантов сортировки. Вот.


private declare function GetTickCount lib "kernel32" as long

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
'сортировать один и тот же массив 10 раз.


И что это будет? Время сортировки уже упорядоченного (сортированного) массива :)))

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам