Здравствуйте, гость ( Вход | Регистрация )

5 страниц V  1 2 3 > »   
Ответить в эту темуОткрыть новую тему
> Проверка скорости обработки, --данных--
Levo222
сообщение 10.6.2020, 11:34
Сообщение #1


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Есть ли разница в Lua между скоростью обработки
информации внутри цикла в таком формате:
Код

local G = color (100, 100)
local R = color (200, 200)
While 1 do
  if G == 0 then
    1
  else
    if R == 0 then
      2
    else
    end
  end
end

В отличие от такого:???
Код

While 1 do
  if color (100, 100) == 0 then
    1
  else
    if color (200, 200) == 0 then
      2
    else
    end
  end
end


Это пара переменных. А если блоков несколько, и они состоят из нескольких десятков сочетающихся между собой? Если ли разница в скорости при выходе за пределы цикла?
Может есть способ замерить милисекунды и погонять чтобы проверить наглядно?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.6.2020, 12:21
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Есть ли разница в Lua между скоростью обработки

Если вызываются функции пилота, то скорость вообще нет смысла замерять. Тем более вызов функций, которые получают цвет в экрана, это как минимум 16 мсек, с аэро 33 мсек, с привязкой быстрее, но все-равно это занимает много времени по сравнению с любыми операциями в луа.
Цитата
Может есть способ замерить милисекунды и погонять чтобы проверить наглядно?

Код
--lua
local t = os.clock()
for i = 1, 1000000000 do  -- миллиард итераций
    if i == 1 then
    end
end
log ('Затрачено времени: ' .. string.format("%.3f", os.clock() - t) .. ' секунд')
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.6.2020, 12:53
Сообщение #3


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 10.6.2020, 16:21) *

Если вызываются функции пилота, то скорость вообще нет смысла замерять. Тем более вызов функций, которые получают цвет в экрана, это как минимум 16 мсек, с аэро 33 мсек, с привязкой быстрее, но все-равно это занимает много времени по сравнению с любыми операциями в луа.


Я ничего не понял. Какая разница между функциями Lua и функциями пилота? Вы имеете ввиду старый язык до версии 3.02?

Цитата(cirus @ 10.6.2020, 16:21) *

с привязкой быстрее

Это касается Delphy или вобще любых операций в пилоте?

Я че-то не догоняю: Есть Lua, Есть Lua через пилот, Есть Lua через другие компиляторы. Есть другие языки через Pilot, есть другие языки через другие компиляторы.
Какие из функций относятся к медленным независимо от использования того иного языка и относятся чисто к пилоту?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.6.2020, 13:53
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Все функции пилота вызываются медленно.
Код
--lua
log 'clear' log 'mode compact'
local t = os.clock()
for i = 1, 10000 do
    local x = power(2, 5)   -- вызов функции пилота
end
log ('Затрачено времени: ' .. string.format("%.3f", os.clock() - t) .. ' секунд')


t = os.clock()
for i = 1, 10000 do      -- можно добавить нулей
    local x = math.pow(2, 5)  -- вызов функции луа
end
log ('Затрачено времени: ' .. string.format("%.3f", os.clock() - t) .. ' секунд')

Цитата
с привязкой быстрее
Это касается Delphy или вобще любых операций в пилоте?

Имеется ввиду получение цвета с перекрытого окна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.6.2020, 14:02
Сообщение #5


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 10.6.2020, 17:53) *

Все функции пилота вызываются медленно.
Имеется ввиду получение цвета с перекрытого окна.

А не с перекрытого?

По поводу привязки имеется ввиду вписывание хэндла в скрипт?

Цитата(cirus @ 10.6.2020, 17:53) *

Код
--lua
log 'clear' log 'mode compact'
local t = os.clock()
for i = 1, 10000 do
    local x = power(2, 5)   -- вызов функции пилота
end
log ('Затрачено времени: ' .. string.format("%.3f", os.clock() - t) .. ' секунд')
t = os.clock()
for i = 1, 10000 do      -- можно добавить нулей
    local x = math.pow(2, 5)  -- вызов функции луа
end
log ('Затрачено времени: ' .. string.format("%.3f", os.clock() - t) .. ' секунд')


Цитата
1.500
0.000

Ха! я понял)

Но ведь color это Lua функция? Не пилота? У родного колора кажется findcolor? А присвоение переменных и циклы также относятся к Lua?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.6.2020, 14:13
Сообщение #6


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Но ведь color это Lua функция?

Нет. https://uopilot.uokit.com/wiki/index.php?title=Color
Список функций, которые есть в луа есть в меню правой кнопки мыши. Хотя там не все.
Цитата
А присвоение переменных и циклы также относятся к Lua?

Да.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.6.2020, 14:17
Сообщение #7


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 10.6.2020, 16:21) *

много времени по сравнению с любыми операциями в луа.


Ничего не понял. Чисто Luaшные функции есть на определение цвета? Или это прерогатива пилота?
И есть ли способ ускорить?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.6.2020, 14:34
Сообщение #8


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 10.6.2020, 18:13) *

есть в меню правой кнопки мыши

Это где?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.6.2020, 14:43
Сообщение #9


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
есть в меню правой кнопки мыши
Это где?

В редакторе пилота.
Цитата
Чисто Luaшные функции есть на определение цвета?

Нет.
Цитата
Или это прерогатива пилота?

Нет. Это функции winapi.
Цитата
И есть ли способ ускорить?

При получении цвета с экрана нет. Если получать цвет с перекрытого окна, то будет быстрее.
Можно через длл https://forum.uokit.com/index.php?showtopic=69910
Или так(хотя это тоже что самое что и через длл):
Код
--lua
local ffi = require("ffi")
local user, gdi = ffi.load('User32.dll'), ffi.load('Gdi32.dll')
ffi.cdef[[
int GetDC(int hWnd);
int ReleaseDC(int hWnd, int hDC);
unsigned long GetPixel(int hdc, int x, int y);
]]
function getpixel(handle, x, y)
    local HDC = user.GetDC (handle)
    local color=gdi.GetPixel(HDC, x, y)
    user.ReleaseDC(handle, HDC)
    return color
end

local result = getpixel(workwindow(), 100, 200)
hint (result)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.6.2020, 14:59
Сообщение #10


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 10.6.2020, 18:43) *

В редакторе пилота.


Ну так вот же?
(IMG:https://i.ibb.co/JtF5x9r/Image-646.jpg)
Там и те функции написаны. color тот же только с хэндлом. То что с хэндлом будет быстрее я понял, только не понял почему, и причем тут перекрытое окно.
получается если не использовать color а напрямую проверять цвет в координатах быстрее будет?
Т.е.
Код
if <100,100> <423543> then
1
else
end
Только так походу работать вообще не будет, функции то нет?

Не тоже самое что
Код
if color(100, 100) == 423543 then
1
else
end

И будет быстрее?

Цитата(cirus @ 10.6.2020, 18:43) *

Если получать цвет с перекрытого окна, то будет быстрее.

имеется ввиду если использовать handle? Или вобще прям перекрыть? А в чём трудность то?
Есть способ считать окно перекрытым, если оно будет неперекрытым? Т.е обмануть пилот?)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.6.2020, 15:04
Сообщение #11


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Ну так вот же?

Это функции пилота. Встроенные функции луа в пункте Lua.
Цитата
Если получать цвет с перекрытого окна, то будет быстрее.
имеется ввиду если использовать handle?

Да. Окно можно не перекрывать, не влияет.
Цитата
if <100,100> <423543> then

Так нельзя, только через функцию.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.6.2020, 15:26
Сообщение #12


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 10.6.2020, 19:04) *

Это функции пилота. Встроенные функции луа в пункте Lua.


А ну понятно, их если что можно взять в справке по луа? Т.е. там все поддерживаются пилотом? Или только те что под LuaJit5.1 ?
альтернативы coloru я так понимаю нет, кроме dll-ки?

Цитата
Или так(хотя это тоже что самое что и через длл):

Ну я так понял Dll это для тех у кого стандартная функция не работает, а вызывает то она также как и обычная?

Насколько быстрее
Вобще изначальный вопрос был насколько быстрее скрипт обращается к переменным за циклом обозначающим цвет точек в заданных координатах, чем к тем которые проверяются непосредственно в самом теле цикла? Я так понимаю ничем если используются стандартные функции пилота? Или там минимальная разница?

Короче есть 2 варианта ускорения:
1. привязывать handle
2. или... привязать handle))) потмоу что dll по сути тоже самое и разницы в скорости нету?
А проблем со стандартной функцией у меня нету, ну разве что мигание окна.
Я ниче не понял почему handle делает работу быстрее? Приоритет окна повышает?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.6.2020, 15:38
Сообщение #13


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Т.е. там все поддерживаются пилотом? Или только те что под LuaJit5.1 ?

Все что для версии 5.1.
Цитата
Вобще изначальный вопрос был насколько быстрее скрипт обращается к переменным за циклом обозначающим цвет точек в заданных координатах, чем к тем которые проверяются непосредственно в самом теле цикла?

Без разницы, если не собираетесь замерять разницу в наносекунды.
Цитата
Я ниче не понял почему handle делает работу быстрее?

Другой принцип получения цвета.
Всё просто, есть 2 варианта:
1. Получать цвет с экрана, медленно.
2. Получать цвет напрямую с окна, быстрее. Насколько, зависит от приложения.
Хоть функциями пилота, хоть длл, хоть как, всё работает одинакового через функции winapi.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.6.2020, 17:19
Сообщение #14


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 10.6.2020, 19:38) *

зависит от приложения.

А скорость отклика приложения отчего зависит? Если ему приоритет менять это поможет? Частота процессора? Ram? Чтение диска?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.6.2020, 17:33
Сообщение #15


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



И еще есть ли способ сразу соотнести handle со всеми переменными с координатами в скрипте? чтобы не писать каждый раз в скобках это слово?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.6.2020, 17:51
Сообщение #16


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 10.6.2020, 16:21) *

минимум 16 мсек, с аэро 33 мсек, с привязкой быстрее

а....
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.6.2020, 17:58
Сообщение #17


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
И еще есть ли способ сразу соотнести handle со всеми переменными с координатами в скрипте?

Нет. Неизвестно же какие переменные это координаты, а какие нет. Пишите свою функцию и не надо будет дописывать.
Код
--lua
function _move(x, y) move(x, y, workwindow()) end
function _kleft(x, y) kleft(x, y, workwindow()) end

_move(100, 100)
wait(1000)
_kleft(200, 200)
end_script()

Цитата
А скорость отклика приложения отчего зависит?

Не знаю, из предположений от фпс.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.6.2020, 18:06
Сообщение #18


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 10.6.2020, 21:58) *

Не знаю, из предположений от фпс.

Фпс монитора? Или фпс самого приложения? просто они немного разные и очень сильно скачут, особенно фпс приложения, так может оказаться что через непривязанное окно считывает быстрее поскольку фпс экрана менее подвержено изменениям?

Цитата(cirus @ 10.6.2020, 21:58) *

Пишите свою функцию и не надо будет дописывать.
Код
--lua
function _move(x, y) move(x, y, workwindow()) end
function _kleft(x, y) kleft(x, y, workwindow()) end

_move(100, 100)
wait(1000)
_kleft(200, 200)
end_script()



Дак точек то много, и действий соответственно тоже, там не один Kleft а десятки клавиш.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.6.2020, 18:32
Сообщение #19


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 10.6.2020, 21:58) *

какие переменные это координаты, а какие нет.

Ну к примеру?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 11.6.2020, 10:14
Сообщение #20


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Так, как привязать handle через Lua? Там же другой синтаксис будет? Чет нигде примеров нету

Через #Set или local?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

5 страниц V  1 2 3 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 20:05
Designed by Nickostyle