purebasic.info

PureBasic forum
Текущее время: Вт окт 23, 2018 3:01 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Сб апр 19, 2014 2:40 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11303
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
ElapsedMilliseconds() выдает 39, иногда 40.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Сб апр 19, 2014 3:33 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 27, 2012 7:12 pm
Сообщений: 880
Откуда: Кустанай
Благодарил (а): 27 раз.
Поблагодарили: 13 раз.
Пункты репутации: 7
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
Time = ElapsedMilliseconds()
For i=0 To 30
 
  Delay(39)
Next
Debug ElapsedMilliseconds()-Time
Time = timeGetTime_()
For i=0 To 30
 
  Delay(39)
 
Next
Debug timeGetTime_()-Time



Для удобства немного поменял, разница в 6 МЛС, конечно есть, но ещё неизвестно что правильнее.
Понятно, что к выньапи доверия больше, но а чётких указаний на правильность этого измерителя нет, так что увы, кто как хочет, так и дрочит.

_________________
Детям нельзя в интернет. От детей интернет тупеет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Сб апр 19, 2014 3:36 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11303
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
Разницы вообще никакой нет.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Сб апр 19, 2014 3:42 pm 
Не в сети
лентяй ужасный
Аватар пользователя

Зарегистрирован: Вс фев 27, 2011 4:23 pm
Сообщений: 646
Благодарил (а): 4 раз.
Поблагодарили: 5 раз.
Пётр писал(а):
Разницы вообще никакой нет.

Значит система так настроена.. Предпологается что ElapsedMilliseconds полный аналог GetTickCount.
Цитата:
The resolution of the GetTickCount function is limited to the resolution of the system timer, which is typically in the range of 10 milliseconds to 16 milliseconds.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Сб апр 19, 2014 3:48 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Цитата:
Предпологается что ElapsedMilliseconds полный аналог GetTickCount.
Ага. ElapsedMilliseconds () = GetTickCount_()

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Сб апр 19, 2014 5:36 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
newww писал(а):
Ну если с QueryPerformanceCounter не охото возиться

А чего там возиться то?
Код:
1
2
3
4
5
6
7
8
9
10
11
maxfreq.q: a.q: b.q: t_total.d = 0: t_average.d
QueryPerformanceFrequency_(@maxfreq)
maxfreq / 1000
For ct = 1 To 30
QueryPerformanceCounter_(@a.q)
Delay(39)
QueryPerformanceCounter_(@b.q)
t_total + (b - a) / maxfreq
t_average = t_total / ct
Debug "Average: " + StrD(t_average, 3) + " milliseconds"
Next




Точность как в аптеке, девиация не превышает 0.040
Цитата:
Average: 39.012 milliseconds
Average: 39.003 milliseconds
Average: 39.028 milliseconds
Average: 39.028 milliseconds
Average: 39.031 milliseconds
Average: 39.034 milliseconds
Average: 39.034 milliseconds
Average: 39.034 milliseconds
Average: 39.037 milliseconds
Average: 39.035 milliseconds
Average: 39.036 milliseconds
Average: 39.035 milliseconds
Average: 39.035 milliseconds
Average: 39.037 milliseconds
Average: 39.038 milliseconds
Average: 39.036 milliseconds
Average: 39.038 milliseconds
Average: 39.039 milliseconds
Average: 39.039 milliseconds
Average: 39.040 milliseconds
Average: 39.040 milliseconds
Average: 39.038 milliseconds
Average: 39.039 milliseconds
Average: 39.038 milliseconds
Average: 39.038 milliseconds
Average: 39.039 milliseconds
Average: 39.039 milliseconds
Average: 39.040 milliseconds
Average: 39.039 milliseconds
Average: 39.039 milliseconds

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Сб апр 19, 2014 6:02 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11303
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
Вроде начиная с версии 5.20, в ElapsedMilliseconds() используется QueryPerformanceCounter_().

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Сб апр 19, 2014 6:21 pm 
Не в сети
лентяй ужасный
Аватар пользователя

Зарегистрирован: Вс фев 27, 2011 4:23 pm
Сообщений: 646
Благодарил (а): 4 раз.
Поблагодарили: 5 раз.
kvitaliy писал(а):
Точность как в аптеке, девиация не превышает 0.040

А теперь, внимание, вопрос! Погрешность из-за QueryPerformanceCounter_() или из-за Delay()? Мне кажеться второе, ибо васик :P

Пётр писал(а):
Вроде начиная с версии 5.20, в ElapsedMilliseconds() используется QueryPerformanceCounter_().

Было бы неплохо.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Сб апр 19, 2014 6:27 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11303
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
newww писал(а):
или из-за Delay()? Мне кажеться второе, ибо васик :P
Т. е. WinAPI функция Sleep_() каким-то образом вычисляет что прога не бейсике и начинает специально вносить погрешности? :shock: :D

newww писал(а):
Пётр писал(а):
Вроде начиная с версии 5.20, в ElapsedMilliseconds() используется QueryPerformanceCounter_().

Было бы неплохо.
Оно так и есть.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Сб апр 19, 2014 6:48 pm 
Не в сети
лентяй ужасный
Аватар пользователя

Зарегистрирован: Вс фев 27, 2011 4:23 pm
Сообщений: 646
Благодарил (а): 4 раз.
Поблагодарили: 5 раз.
Пётр писал(а):
Т. е. WinAPI функция Sleep_() каким-то образом вычисляет что прога не бейсике и начинает специально вносить погрешности? :shock: :D

А как же, нужно же конкурентов VB гасить не дав им взлететь :P

А то что Delay=Sleep, ElapsedMilliseconds=GetTickCount- это ваши догадки, или Фред где-то об этом официально поведал?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Сб апр 19, 2014 6:52 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11303
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
Дизассемблер кто-то отменял?

Фред об этом писал. http://www.purebasic.fr/english/viewtop ... 28&t=57321

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Вс апр 20, 2014 1:13 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 620
Благодарил (а): 2 раз.
Поблагодарили: 34 раз.
Пункты репутации: 9
Дизассемблер конечно притормаживает.
Но вот мне не понятно смысла когда передача аргумента в прцедуру
!mov eax,[переменная]
!puch eax
а в встроенную функцию просто
!puch [переменная]
зачем через регистор?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм Функции FindString
СообщениеДобавлено: Чт июн 12, 2014 11:17 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Сделал эти измерения в виде модуля. Так вроде удобнее и понятнее
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
DeclareModule Time
  Declare TimeInit()
  Declare TimeGetStart()
  Declare TimeGetEnd()
  Declare.d TimeGetTime()
EndDeclareModule
 
Module Time
  Global.q tick, a, b
 
  Procedure TimeInit()
    QueryPerformanceFrequency_(@tick)
    tick = tick / 1000
  EndProcedure
 
  Procedure TimeGetStart()
    QueryPerformanceCounter_(@a)
  EndProcedure
 
  Procedure TimeGetEnd()
    QueryPerformanceCounter_(@b)
  EndProcedure
 
  Procedure.d TimeGetTime()
    ProcedureReturn (b-a)/tick
  EndProcedure
EndModule
 
Time::TimeInit()
 
For i = 1 To 100
  Time::TimeGetStart()
  Delay(89)
  Time::TimeGetEnd()
  Debug Time::TimeGetTime()
Next


_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB