|
Обмен данными |
|
|
DarkMaster |
25.3.2021, 14:07
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27681
Пользователь №: 11.279
|
Цитата И если вы зададите ожидание в 1 тысячную, то на выходе получите минимум 1 сотую. Я знаю эту хрень. Когда-то гуглил - вроде есть обходы. Вроде находил на чем-то связанном с бенчмарками, но это было уж очень давно. По передачи данных через сокеты прям мгновенную скорость не факт, что получится развить ибо все проходит через буферы и получить лишнюю сотку можно очень легко. Тем не менее могу предложить идею создавать некоторый массив через ffi, адрес этого массива передать в другой скрипт любым самым тормозным способом, но уже зная адрес этого массива мы можем читать данные напрямую все через тот же ffi.cast. При этом нужно понимать, что писать туда ничего не нужно из нескольких скриптов одновременно, либо создавать синхронизацию потоков. Сообщение отредактировал DarkMaster - 25.3.2021, 14:08
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
sutra |
25.3.2021, 15:56
|
Adept
Сообщений: 923
Регистрация: 10.8.2018 Группа: Пользователи Наличность: 0
Пользователь №: 19.007
|
Дарк, спасибо огромное, но мне самому с моим уровнем недотункать. Будет как-нибудь времечко - кинь элементарный пример. Мне и нужно то всего 3 цифры читать. Научился я распознавать звуки, всё вроде нормуль, но когда прилетают звуки один за другим и "наслаиваются", тут без обработки таймингов ну никак не получается. А погрешности таймингов ну просто "дикие". 27 тысячных (у меня) кушает getimage, 16 тысячных погрешность - это всё терпимо. Но если я всё это помещаю в основной скрипт (+27 тысячных на ещё один getimage) весь этот карточный домик разваливается, так как реал-тайм улетучивается. Получается погрешность 7 сотых - это 14 кадров в секунду и вот этого уже явно недостаточно. Ну а не будет времени - плюнь - обойдусь без излишеств и так уж всё больно круто у меня получилось. Кстати, ты не доделал свой файндимидж?? Хотя я своим, опять же спасибо тебе, ну просто доволен. Ищет абсолютно всё, что мне надо, всё супер быстро, всё равно якорь - это getimage, и этот якорь может поднять только Билли, ну или Илон Маск (IMG: style_emoticons/default/biggrin.gif)
|
|
|
|
DarkMaster |
25.3.2021, 16:14
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27681
Пользователь №: 11.279
|
Цитата Кстати, ты не доделал свой файндимидж?? Ты не поверишь) Сижу уже неделю тестирую, как и что шустрее. Начал с финдколора ибо он вообще мертвый. Там получился целый набор функций. Для меня например оказалось большим сюрпризом, что передача массивов в функции и последующая работа с ними намного тормознутее работы с кучей переменных. Причем там проигрыши были до 5000 раз. По поводу передачи параметров. В первом скрипте: Код local data = ffi.new("unsigned int[3]") data[1] = 123 data[2] = 321 data[3] = 456 -- далее куда-нибудь в файл/сокет, да хоть ручками вбить значение во второй скрипт: log(tostring(data))
Соответственно во втором скрипте: Код -- Написано по-свински. Как нормально создать указатель -- на некоторый адрес я так и не понял. -- Создает вроде как на NULL, -- но меня прям разрывает от негодования, -- что я не могу инициализировать значение, хотя бы нулем. -- Так что есть теоретические шансы, что куда-то улетит -- указатель при объявлении. -- Все мои попытки нормально задать адрес разбились об -- изменение типа с указателя на number/int в автоматическом режиме. local p = ffi.new("unsigned int*") local i = ffi.new("unsigned int[1]",address)
p = p+i[0]/4 + 1 -- Устанавливаем указатель на наш адрес. log(p[0],p[1],p[2]) -- cобственно наши данные
Сообщение отредактировал DarkMaster - 25.3.2021, 17:21
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
DarkMaster |
28.3.2021, 21:05
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27681
Пользователь №: 11.279
|
Цитата Да, получалось, что ты делал побитовое копирование всех элементов массива, вместо передачи ссылки на этот массив, что намного дороже по времени. Это где я весь массив копировал? Та шапка - это по сути установка базового адреса, дальше по указателям. По крайней мере осознанно я указатели дергал. Самые большие провалы по скорости были в случаях когда в функцию передается стандартный lua массив и с этим массивом потом начинается математика, при том, что в луа массивы передаются по ссылке/указателю, а не копируются. Меняешь массив на набор переменных и все ок. Причина такого фатального провала по скорости мне не ясна. Есть подозрение, что это связано со скрытыми проверками на выход за пределы массив либо чем-то схожим, но это не более, чем догадка. Цитата Так не проще? Проще. Но тогда мне мозги эта хрень вынесла полностью. p = a будет number p = p + a будет number p = p + 1 будет указатель p = 1 будет number p = p - p +1 будет number для меня логика постигнута не была. Если p + 1 указатель, то почему p+a уже number? Привел тип? А почему в p + 1 не привел? Типа 1 у нас не тип number, не unsigned int, это просто константа, которая была приведена к уже существующему типу? Тогда почему в p = 1 она не была так же приведена к уже существующему указателю? Может я просто не шарю, но для меня это полностью не логичный бред. Поэтому и с плюсами в свое время не сложилось. Ну не понять мне зачем 10 раз переобъявлять стандартные типые данных. Я не против строгой типизации, но когда я вижу какой-нибудь LPSTR у меня глаз начинает дергаться. И только попробуй ему подсунуть какой-то зашкварный указатель, ему нужно только LPSTR, а то, что он будет точно таким же указателем - так это пофигу. Хотелось убивать. Сообщение отредактировал DarkMaster - 28.3.2021, 21:20
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|