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

35 страниц V « < 12 13 14 15 16 > »   
Ответить в эту темуОткрыть новую тему
> Помогите освоить LUA
sutra
сообщение 21.12.2018, 17:37
Сообщение #261


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Я все-таки надеюсь, что допилишь поиск по мин/макс каналу и точность

Да ну её эту точность. Под свои частные случаи я настроил алгоритм. Ну и я ж говорю, самое медленное - это getimage. Нет смысла ничего ускорять. Проверил на живых картинках - ищет практически мгновенно, ну максимум 1 сотую секунды, браузер ничего не успеет сделать, как скрипт готов выполняться далее.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 21.12.2018, 20:19
Сообщение #262


***********

Модератор UOPilot
Сообщений: 9.764
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29941
Пользователь №: 11.279



Цитата
Да ну её эту точность.

Просто сейчас получается есть два оператора и оба калеченные и не взаимозаменяемые.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.12.2018, 13:03
Сообщение #263


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



rmem("unsigned char*",ind)[0]
Дарк, а что означает нуль в квадратных скобках? Хендл Пилота?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.12.2018, 13:18
Сообщение #264


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



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

Иначе говоря, можно вместо "unsigned char*" использовать свою структуру? Ведь можем же считать 2 байта, если нарисовать например "uint_16t"
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 22.12.2018, 13:19
Сообщение #265


***********

Модератор UOPilot
Сообщений: 9.764
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29941
Пользователь №: 11.279



Цитата
Дарк, а что означает нуль в квадратных скобках? Хендл Пилота?

Оно читает в данном случае, как _ссылку_ на массив. Ноль обозначает номер элемента.
А зачем их вообще куда-то толкать? Мы же их не копируем. Читать то по сути можно сколько угодно, но смысл не ясен.

Сообщение отредактировал DarkMaster - 22.12.2018, 13:20


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.12.2018, 13:45
Сообщение #266


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Ноль обозначает номер элемента

Отлично, именно это и хотел спросить, и именно так и думал. Если есть своя структура, ну например ffi.cdef[[typedef struct{uint8_t red,green,blue;}rgb]] , то мы можем в ридмеме использовать её? И сразу иметь все 3 канала?


Грубо говоря в идеале заставить ридмем считывать столько байт, сколько надо.

То есть есть структура из 3-х байт. Я объявляю допустим 10 элементов этой структуры и чтобы сразу поиметь 30 байт, которые ровно лягут во все 10 элементов.

Я правильно понял что вот эту хрень - s[7]=rmem("unsigned char*",ind+1)[0] я могу заменить на эту - s[7]=rmem("unsigned char*",ind)[1] ??

На последний вопрос ответ получен, можно.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 22.12.2018, 13:59
Сообщение #267


***********

Модератор UOPilot
Сообщений: 9.764
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29941
Пользователь №: 11.279



обычно в таких случаях используют массив char'ов.
вообще в данном случае мы читаем через cast(явное приведение типов). В данном случае хз как все это делать правильно.

Поясни, что именно ты хочешь сделать? Сравнить два длинных участка памяти? Скопировать кусок памяти? Если скопировать, то зачем?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.12.2018, 14:08
Сообщение #268


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



rr=rmem("rgb*",p)[0] РАБОТАЕТ!! Сразу читает в СИ структуру все 3 канала. Да хотел убрать один цикл, тормозят эти циклы, хотел сразу считать все пиксели в массив СИ-шный (естественно только для одной строки пикселей).
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 22.12.2018, 14:43
Сообщение #269


***********

Модератор UOPilot
Сообщений: 9.764
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29941
Пользователь №: 11.279



ну как бы логично) ты же и так уже структуры использовал. я думал ты именно некоторый кусок памяти длиной N хочешь куда-то скопировать. Тем не менее я все еще не понимаю зачем нужно подобное чтение. Что-то у меня подозрения, что лишние операции проводятся.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.12.2018, 15:15
Сообщение #270


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Дольше в 2 раза читает структуру ридмем. Не поленился, опять всё шаг за шагом протестировал. Пока понятно следующее. Ридмем - это самый быстрый шаг во всей цепочке анализа, и ему фиолетово что с нулевого, что не с нулевого индекса читать. Теперь далее. Сам по себе цикл for выполняется в 3 раза быстрее, чем while. Но загвоздка в том, как индекс цикла используется внутри цикла. Вот на этот вопрос у меня пока нет однозначного ответа, но он обязательно будет. Тормоз - это кишки внутри цикла и от типа переменных внутри его тормоза могут увеличиваться аж в 4 РАЗА. Вот я и пытаю пока, как эти типы работают внутри.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.12.2018, 15:28
Сообщение #271


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



64 разрядные (пока не всё ещё проверил) иногда работают быстрее, но их нельзя использовать в for-ах. Вот тут и надо смотреть чем жертвовать, типом цикла или скоростью внутренних вычислений.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 22.12.2018, 15:55
Сообщение #272


***********

Модератор UOPilot
Сообщений: 9.764
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29941
Пользователь №: 11.279



дай код


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.12.2018, 17:53
Сообщение #273


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
дай код

Да погоди Дарк, я вообще ничего не понимаю, сейчас ещё раз всё по новой проверю. Ну вот проверял ведь, фор работал в 3 раза быстрее вайла. А в моей функции вайлы работают на 15% быстрее форов, как так может быть, не знаю. Сейчас проверю ещё влияние if в обоих типах циклов.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.12.2018, 18:12
Сообщение #274


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Код
log "clear" log "mode compact"
tmc=os.clock()
for i=1,200000000 do end
log(os.clock()-tmc)

tmc=os.clock()
i=1
while i<=200000000 do i=i+1 end
log(os.clock()-tmc)

tmc=os.clock()
for i=1,200000000 do a=i end
log(os.clock()-tmc)

tmc=os.clock()
i=1
while i<=200000000 do i=i+1 a=i end
log(os.clock()-tmc)

tmc=os.clock()
for i=1,200000000 do if i>100 then a=i else a=0 end end
log(os.clock()-tmc)

tmc=os.clock()
i=1
while i<=200000000 do if i>100 then a=i else a=0 end  i=i+1  end
log(os.clock()-tmc)

stop_script()

If действительно начинает сильно затормаживать цикл, но всё равно for быстрее, так что я ничего не понимаю.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 22.12.2018, 18:21
Сообщение #275


***********

Модератор UOPilot
Сообщений: 9.764
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29941
Пользователь №: 11.279



ты не пробовал не переменные использовать в ифах, а напрямую читать память?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.12.2018, 18:48
Сообщение #276


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
ты не пробовал не переменные использовать в ифах, а напрямую читать память?

Не пробовал, но думал, но ведь это всё равно будет делать lua и значит будет приведение типов.


У меня тут десятки разных вариантов. Вот тебе чисто для примера, может я чего-то просто не вижу.
Код
--lua
local ffi=require "ffi"                                                        -- Использование модуля ffi для использования СИ структур
local rmem=ffi.cast                                                            -- Использование функции чтения из памяти модуля ffi
ffi.cdef[[typedef struct{uint16_t x,y; uint8_t red,green,blue;}xyrgb]]         -- Определение структуры массива чтения данных из памяти образа картинки
local function FindMemRGBpf(addr,len,scrX1,scrY1,fx1,fy1,fx2,fy2,usl,numf)         -- ПОИСК ПИКСЕЛЕЙ ПО ЗНАЧЕНИЯМ RGB В ОБЛАСТИ ПАМЯТИ
-- addr,len : адрес в памяти, длина строки в памяти (то, что даёт getimage)
-- scrX1,scrY1 : координаты верхнего левого угла образа в памяти, должны быть аналогичны координатам getimage
-- fx1,fy1,fx2,fy2 : координаты поиска пикселей, абсолютные относительно рабочего окна. Должны быть внутри диапазона координат образа в памяти.
-- usl : ОДНО строковое условие поиска "R(10-255) G(70-100) B(50) R-G[50 200] R-B[-40 -20] G-B[15]".
-- numf : максимальное количество искомых пикселей
  local n=math.min(numf,(fx2-fx1+1)*(fy2-fy1+1))            -- Определение максимальной размерности возвращаемого функцией СИ массива найденных пикселей
  local arr=ffi.new("xyrgb[?]",n)                        -- Инициализация СИ массива искомых пикселей (используя ранее описанную структуру)
  local r1,r2=usl:match("R%((%d+)%-*(%d*)")
  local g1,g2=usl:match("G%((%d+)%-*(%d*)")
  local b1,b2=usl:match("B%((%d+)%-*(%d*)")
  local RG1,RG2=usl:match("R%-G%[(%-*%d+)%s*(%-*%d*)")
  local RB1,RB2=usl:match("R%-B%[(%-*%d+)%s*(%-*%d*)")
  local GB1,GB2=usl:match("G%-B%[(%-*%d+)%s*(%-*%d*)")
  local r,g,b,cr1,cr2,cg1,cg2,cb1,cb2=ffi.new("uint8_t"),ffi.new("uint8_t"),ffi.new("uint8_t"),ffi.new("uint8_t"),ffi.new("uint8_t"),
        ffi.new("uint8_t"),ffi.new("uint8_t"),ffi.new("uint8_t"),ffi.new("uint8_t")
  local cRG1,cRG2,cRB1,cRB2,cGB1,cGB2,k=ffi.new("int16_t"),ffi.new("int16_t"),ffi.new("int16_t"),ffi.new("int16_t"),
                ffi.new("int16_t"),ffi.new("int16_t"),ffi.new("int16_t")
  if r1==nil then  cr1,cr2=0,255
    else  cr1=tonumber(r1)  if r2=="" then  cr2=cr1  else  cr2=tonumber(r2)  end
  end
  if g1==nil then  cg1,cg2=0,255
    else  cg1=tonumber(g1)  if g2=="" then  cg2=cg1  else  cg2=tonumber(g2)  end
  end
  if b1==nil then  cb1,cb2=0,255
    else  cb1=tonumber(b1)  if b2=="" then  cb2=cb1  else  cb2=tonumber(b2)  end
  end
  if RG1==nil then  cRG1,cRG2=-255,255
    else  cRG1=tonumber(RG1)  if RG2=="" then  cRG2=255  else  cRG2=tonumber(RG2)  end
  end
  if RB1==nil then  cRB1,cRB2=-255,255
    else  cRB1=tonumber(RB1)  if RB2=="" then  cRB2=255  else  cRB2=tonumber(RB2)  end
  end
  if GB1==nil then  cGB1,cGB2=-255,255
    else  cGB1=tonumber(GB1)  if GB2=="" then  cGB2=255  else  cGB2=tonumber(GB2)  end
  end
  local indY,ind,caddr,clen,cscrX1,cscrY1,cfx1,cfx2,cfy1,cfy2=ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t"),
                ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t")
  k,caddr,clen,cscrX1,cscrY1,cfx1,cfx2,cfy1,cfy2=-1,addr,len,scrX1,scrY1,fx1,fx2,fy1,fy2
  for i=cfy1,cfy2 do
    indY=caddr+(i-cscrY1)*clen
    for j=cfx1,cfx2 do
      ind=indY+(j-cscrX1)*3
      b=rmem("unsigned char*",ind)[0]
      g=rmem("unsigned char*",ind)[1]
      r=rmem("unsigned char*",ind)[2]
      if r>=cr1 and r<=cr2 and g>=cg1 and g<=cg2 and b>=cb1 and b<=cb2 and r-g>=cRG1 and r-g<=cRG2 and r-b>=cRB1 and r-b<=cRB2 and g-b>=cGB1 and g-b<=cGB2 then
        k=k+1 arr[k].x,arr[k].y,arr[k].red,arr[k].green,arr[k].blue=j,i,r,g,b
        if numf-1==k then return k,arr  end
      end
    end
  end
  return k,arr
end----------------------------------------------------------------------------
local function FindMemRGBpw(addr,len,scrX1,scrY1,fx1,fy1,fx2,fy2,usl,numf)         -- ПОИСК ПИКСЕЛЕЙ ПО ЗНАЧЕНИЯМ RGB В ОБЛАСТИ ПАМЯТИ
-- addr,len : адрес в памяти, длина строки в памяти (то, что даёт getimage)
-- scrX1,scrY1 : координаты верхнего левого угла образа в памяти, должны быть аналогичны координатам getimage
-- fx1,fy1,fx2,fy2 : координаты поиска пикселей, абсолютные относительно рабочего окна. Должны быть внутри диапазона координат образа в памяти.
-- usl : ОДНО строковое условие поиска "R(10-255) G(70-100) B(50) R-G[50 200] R-B[-40 -20] G-B[15]".
-- numf : максимальное количество искомых пикселей
  local n=math.min(numf,(fx2-fx1+1)*(fy2-fy1+1))                         -- Определение максимальной размерности возвращаемого функцией СИ массива найденных пикселей
  local arr=ffi.new("xyrgb[?]",n)                                        -- Инициализация СИ массива искомых пикселей (используя ранее описанную структуру)
  local r1,r2=usl:match("R%((%d+)%-*(%d*)")
  local g1,g2=usl:match("G%((%d+)%-*(%d*)")
  local b1,b2=usl:match("B%((%d+)%-*(%d*)")
  local RG1,RG2=usl:match("R%-G%[(%-*%d+)%s*(%-*%d*)")
  local RB1,RB2=usl:match("R%-B%[(%-*%d+)%s*(%-*%d*)")
  local GB1,GB2=usl:match("G%-B%[(%-*%d+)%s*(%-*%d*)")
  local r,g,b,cr1,cr2,cg1,cg2,cb1,cb2=ffi.new("uint8_t"),ffi.new("uint8_t"),ffi.new("uint8_t"),ffi.new("uint8_t"),ffi.new("uint8_t"),ffi.new("uint8_t"),
            ffi.new("uint8_t"),ffi.new("uint8_t"),ffi.new("uint8_t")
  local cRG1,cRG2,cRB1,cRB2,cGB1,cGB2,k=ffi.new("int16_t"),ffi.new("int16_t"),ffi.new("int16_t"),ffi.new("int16_t"),
                ffi.new("int16_t"),ffi.new("int16_t"),ffi.new("int16_t")
  if r1==nil then  cr1,cr2=0,255
    else  cr1=tonumber(r1)  if r2=="" then  cr2=cr1  else  cr2=tonumber(r2)  end
  end
  if g1==nil then  cg1,cg2=0,255
    else  cg1=tonumber(g1)  if g2=="" then  cg2=cg1  else  cg2=tonumber(g2)  end
  end
  if b1==nil then  cb1,cb2=0,255
    else  cb1=tonumber(b1)  if b2=="" then  cb2=cb1  else  cb2=tonumber(b2)  end
  end
  if RG1==nil then  cRG1,cRG2=-255,255
    else  cRG1=tonumber(RG1)  if RG2=="" then  cRG2=255  else  cRG2=tonumber(RG2)  end
  end
  if RB1==nil then  cRB1,cRB2=-255,255
    else  cRB1=tonumber(RB1)  if RB2=="" then  cRB2=255  else  cRB2=tonumber(RB2)  end
  end
  if GB1==nil then  cGB1,cGB2=-255,255
    else  cGB1=tonumber(GB1)  if GB2=="" then  cGB2=255  else  cGB2=tonumber(GB2)  end
  end
  local i,j,indY,ind,caddr,clen,cscrX1,cscrY1,cfx1,cfx2,cfy1,cfy2=ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t"),
                ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t"),ffi.new("uint16_t")
  i,k,caddr,clen,cscrX1,cscrY1,cfx1,cfx2,cfy1,cfy2=fy1,-1,addr,len,scrX1,scrY1,fx1,fx2,fy1,fy2
  while i<=cfy2 do
    indY,j=caddr+(i-cscrY1)*clen,cfx1
    while j<=cfx2 do
      ind=indY+(j-cscrX1)*3
      b=rmem("unsigned char*",ind)[0]
      g=rmem("unsigned char*",ind)[1]
      r=rmem("unsigned char*",ind)[2]
      if r>=cr1 and r<=cr2 and g>=cg1 and g<=cg2 and b>=cb1 and b<=cb2 and r-g>=cRG1 and r-g<=cRG2 and r-b>=cRB1 and r-b<=cRB2 and g-b>=cGB1 and g-b<=cGB2 then
        k=k+1 arr[k].x,arr[k].y,arr[k].red,arr[k].green,arr[k].blue=j,i,r,g,b
        if numf-1==k then return k,arr  end
      end
      j=j+1
    end
    i=i+1
  end
  return k,arr
end----------------------------------------------------------------------------
log "clear" log "mode compact"
-- сделать окно рабочим
local p,_,_,l=getimage(0,0,999,999,ok[1][1])

tmc=os.clock()
for jj=1,1000 do
  k,arr=FindMemRGBpf(p,l,0,0, 0,0,999,999,"R(251)G(112)",2)
end
log(os.clock()-tmc)

tmc=os.clock()
for jj=1,1000 do
  k,arr=FindMemRGBpw(p,l,0,0, 0,0,999,999,"R(251)G(112)",2)
end
log(os.clock()-tmc)
tmc=os.clock()
for jj=1,500 do
  k,arr=FindMemRGBpf(p,l,0,0, 0,0,999,999,"R-G[139 139]R-B[249 249]",2)
end
log(os.clock()-tmc)

tmc=os.clock()
for jj=1,500 do
  k,arr=FindMemRGBpw(p,l,0,0, 0,0,999,999,"R-G[139 139]R-B[249 249]",2)
end
log(os.clock()-tmc)

deleteimage(p)
log(k)
if k~=-1 then  log(arr[k].x,arr[k].y,arr[k].red,arr[k].green,arr[k].blue)  end
stop_script()


Дарк, подправь, что бы плюсиком код разворачивался. А то страничку испоганило.

Для смеха осталось попробовать сделать всё то же самое, прямо в основном теле скрипта. Тут конечно черновые варианты, потом я оптимизирую, но для начала хочу понять где тут костыли.

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

Сообщение отредактировал DarkMaster - 22.12.2018, 19:51
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 22.12.2018, 19:12
Сообщение #277


**********

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



А это как объяснить?:
Код
--lua
log "clear" log "mode compact"

local a, tmc
tmc=os.clock()
for i=1,200000000 do if i>56 then a=i else a=0 end end
log(os.clock()-tmc)

tmc=os.clock()
for i=1,200000000 do if i>57 then a=i else a=0 end end
log(os.clock()-tmc)
stop_script()

log:
Цитата
0.088999999999942
0.89200000000005
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.12.2018, 19:14
Сообщение #278


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



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

Код
0.11799999998766
1.0469999999914

Я вообще ничего уже не понимаю.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 22.12.2018, 19:15
Сообщение #279


**********

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



Цитата
скопировал свою хрень на новую вкладку скриптов и вторая часть скрипта стала работать почти в 2 раза быстрее

Когда было такое, исправлялось. Видимо, ещё где-то что-то осталось.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.12.2018, 19:26
Сообщение #280


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Код
--tmc=os.clock()
--for jj=1,1000 do
--  k,arr=FindMemRGBpf(p,l,0,0, 0,0,999,999,"R(251)G(112)",2)
--end
--log(os.clock()-tmc)

--tmc=os.clock()
--for jj=1,1000 do
--  k,arr=FindMemRGBpw(p,l,0,0, 0,0,999,999,"R(251)G(112)",2)
--end
--log(os.clock()-tmc)
tmc=os.clock()
for jj=1,500 do
  k,arr=FindMemRGBpf(p,l,0,0, 0,0,999,999,"R-G[139 139]R-B[249 249]",2)
end
log(os.clock()-tmc)

tmc=os.clock()
for jj=1,500 do
  k,arr=FindMemRGBpw(p,l,0,0, 0,0,999,999,"R-G[139 139]R-B[249 249]",2)
log(os.clock()-tmc)
end

Попробуйте с заремаренной и разремаренной первой частью. Это у всех такая разница или только у меня.



Цитата
Когда было такое, исправлялось. Видимо, ещё где-то что-то осталось.

У меня причина в первой части скрипта, при заремаренной быстрее почти в 2 раза. Что-то тут нечисто. Или косяк в функции, ну или я не знаю...


Наверно потому что объявил их от лени тупо некорректно..
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

35 страниц V « < 12 13 14 15 16 > » 
Ответить в эту темуОткрыть новую тему
8 чел. читают эту тему (гостей: 8, скрытых пользователей: 0)
Пользователей: 0

 

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