Tverd
все, теперь ясно... гуд!
Snusmumriken
Кстати неплохая тема, да. Просто смотрим первый (или последний) элемент, и если его время пришло - выполняем, удаляя событие.
Кстати, советую удалять из конца массива, ибо при удалении из начала - под капотом луёв происходит слишком много сдвигов.
Tverd
Вот хорошее замечание
Tverd
кстати, надо потестить насколько
Alexander
Snusmumriken
Я тестил на телефоне, вставка в начало медленнее примерно на (n - маленькое с), где n - длина массива.
Удаление из начала массива длиной в миллион элементов, чуть меньше чем в миллион раз медленнее чем удаление из конца.
Tverd
ого... понятно
Alexander
у меня таких масштабов нет
Alexander
максимум тысяча примерно
Alexander
мне кажется, на тысячу сдвигов вполне хватит одной миллисекунды
Alexander
а быстрее совсем не надо
Snusmumriken
Хватит, хватит :3
Alexander
так что оставлю как есть.
Snusmumriken
Благо компы сейчас быстрые.
На самом деле, это проблема всех динамических штук. Двусвязные списки, в данном случае, хороши. Хоть и жрут кучу памяти, и медленный поиск. Хотя на тему поиска, можно внести дополнительную индексацию, которую, правда, нужно обновлять.
Maxx
зачем двусвязный список, если для таких задач есть B-tree? там сложность поиска логарифмическая.
а тормоза с динамикой можно убрать, если свой аллокатор сделать: сначала выделить большой кусок памяти средствами системы, а там уже играться как-угодно по-своему
Maxx
например https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE-%D1%87%D1%91%D1%80%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE
Alexander
это да если миллионы-миллиарды объектов
а у меня тупо миллион в принципе быть не может, разве что в эту игру будут играть все русскоязычные пользователи телеграма
Maxx
пару раз мелькнёт на хабре, и будешь сервер из чайника поливать, чтоб не дымился =)
Alexander
так что верхний потолок в лучшем случае 20-30 тысяч, и то через год-два.
не вижу смысла сейчас тратить время на такие оптимизации
Alexander
не будет - это вспомогательный, а не основной бот
Alexander
да и инвайта на хабр мне никто не дает (впрочем я и не прошу, и сам туда писать не особо собираюсь)
Snusmumriken
Tverd
Snusmumriken
Alexander
а кстати. как сам иерусалимский относится к luajit?
я пытался гуглить, но не нашел фраз, которые бы говорили о таком
Tverd
Я аналогично не видел
Tverd
https://github.com/neomantra/lds
Snusmumriken
Кстати, если кому интересно, как именно пишут на ffi:
https://github.com/luapower/libcurl/blob/master/libcurl.lua
Tverd
кому если надо тестить свои приложения, дабы небыло ошибок ;) то есть однофайловый тестер https://bitbucket.org/zserge/gambiarra
Tverd
@Snusmumriken скажи, а зачем ты писал сортировку, чем не устроила стандартная table.sort ?
Snusmumriken
Медленно : 3
Да, сишный квиксорт оказывается медленнее.
Tverd
Сишная медленнее? Там же вроде qsort?
Tverd
Что за чудеса....
Snusmumriken
Вопрос задач.
На почти совсем отсортированных массивах, гномы быстрее.
Tverd
А, понял
Snusmumriken
А теперь представь что у меня - миллион статичных кирпичей, и несколько сотен динамических объектов, которые только меняются местами со статичными кирпичами. Сортировать квиксортом - значительно медленнее, инфа сотка.
Да, сортировка происходит по координатам вдоль какой-то из осей (x/y).
Tverd
да, я посмотрел алгоритм... это понятно, это правильный подход )
Snusmumriken
CombSort проигрывает стандартному квиксорту, но есть пара граничных случаев где его можно использовать чуть быстрее (почти отсортированный массив, на края которого мы вставляем что-то, что нужно далеко двигать).
Snusmumriken
Хотя сортировка рандомом - венец алгоритмов.
Как и #define true random() > 0.5.
И прочая стохастика. Осталось научиться приемлемо кодить в таких условиях.
Alexander
Snusmumriken
Ехехе, кстати, ты в курсе, что массив находится в состоянии суперпозиции, пока ты его не проанализировал?
И одна из суперпозиций - упрядоченность.
Alexander
Snusmumriken
Ну, пока ты не пробежал по элементам массива и не сравнил с предыдущими - ты не знаешь, сортирован массив или нет. Меня напрягают попсовые "шрёдингеры", вылезающие из всех щелей, но как факт, суперпозиция присутствует :3
В таком случае, можно взять состояние суперпозиции где он отсортирован, и получить любой сортированный массив за O(1) :3
Правда, шанс не велик, да.
Если много-много оперировать вероятностями - можно приблизить вероятность отсортированного массива к максимуму.
Tverd
😆😆😆 нормальные измышления в чате по луа
Snusmumriken
Ехехехе, это стохастическое программирование.
Пихаем как можно больше рандома во все щели, и получаем ПОЧТИ ГАРАНТИРОВАННО нужный результат за минимальное время.
Alexander
Snusmumriken
Точнее *оно должно таким быть*, если хорошо вкурить матан.
Snusmumriken
Нет, как раз минимальное - быстрее любых существующих алгоритмов, чаще всего - O(1).
То есть, ситуация в мировом эфире сложилась таким образом, что ты получил сразу нужный вариант :3
Alexander
это ты Грега Игана начитался?
Snusmumriken
Это как глупая сортировка, которая каджый раз срабатывает идеально.
Snusmumriken
Не, расслабься :3
Хотя идея хорошая.
Мерль
:3
Snusmumriken
Для генерации миллиардов хеш-ключей - самое то.
Сотня ключей может быть ошибочной, но кого это волнует, при таком количестве правильных ответов?
Snusmumriken
За примерами далеко ходить не надо.
У lua большие проблемы с обработкой большого количества почти идентичных строк, ибо хеширующая функция зависит только нескольких символов в строке. И хорошо если хоть начала или концы строк различаются.
Но тут есть и свои плюсы, в виде ужасно быстрого дублирования и передачи строк в функции.
Snusmumriken
Пришел один программист к мудрецу, и попросил программу без ошибок.
- Глупец! - вскричал мудрец - Почему ты не попросишь у меня ошибку без программы?
И хрясь, винчестером по голове.
Tverd
))))))
Tverd
Ну вот, таймеры кажись написал, надо тестить теперь. Благодарствую за идею про сортированный массив по времени срабатывания
Tverd
Парни, в геймдеве сегодня промелькнуло сообщение о том что https://www.cgpeers.com/ доступен для регистрации на 48 часов. Это трекер с геймдевскими штуками, плагинами, паками и прочим... кому надо, в общем.
Иван
Tverd
модели есть точно
Tverd
Да и текстуры тоже )
Иван
В общем зарегался, вдруг когда пригодится.
Иван
Спс
Мерль
https://habrahabr.ru/post/321864/
Tverd
Кстати, openresty реально быстр... Тестировал как-то
Maxx
мне openresty отдавал страницу за 5-7 мс на очень среднем железе.
это было круто во времена РНР5, который на том же железе был раз в 15 медленнее.
но потом вышел РНР7, и время отдачи страницы стало очень сравнимо с. практически те же 10+ мс, но с намного более оптимизированным под веб-дев инструментарием.
Tverd
Ну это понятно, если надо что-то большое, одним опенрести сыт не будешь... А если стоит nginx и надо что-то мелкое и по быстрому, то почему бы и нет
Maxx
угу, но не хватает ещё одного "если": если уже есть под рукой хорошая/удобная библиотека для вебдева.
типа там, парсинг запросов, защита от инъекций, форматирование ответов, и т.п.
Snusmumriken
Snusmumriken
Ну там, тебе нужна авторизация/парсинг запросов/защита от инъекций и форматирование ответов?
Мути на php. Нужны сложные штуки типа ускоренного ресайзинга картинок через imagemagic? Вот тебе специальный адрес для этого, где всё калькулируется на луях.
В моём примере, в одних случаях грузится http-шка, в других - скрипт lua как текст (для моего webrequire), в третьем - выполняется скрипт на луях. Ну, ещё лишняя плюха для css.
Регулярки тащат.
Maxx
да я к тому, что чтобы сделать хоть что-то серьёзное, уровня выше, чем "поделка на коленке", нужен нормальный веб-фреймворк с парсингом сырых запросов/ответов, работы со всякими там chunked encoding, gzip и т.п.
а иначе оно так и останется на уровне "ма! смотри как я могу!" =)
Maxx
ключевое слово - "будет" =)
ну, и когда всё это действительно будет, получится "тот же РНР, только не РНР, но прям почти как РНР" =)
Snusmumriken
Тут прекол в "ма смари я умею в микросервисы, пережёвывающие пяцот тыщ запросов в секунду с матаном и лазаньем в бд". Да, надо пилить то что тебе нужно, потому что луи пока не доминируют в вебе, хотя ничто особо не мешает заменять ими жаваскрипт с пхп, кроме поддержки луёв в браузерах : )
Другое дело, что если луи станут популярными - появится огромная тонна говнобиблиотек, написанных криворукими макаками, поэтому придётся десять раз думать, что выбирать, вместо того чтобы брать то что нашёл, ибо сейчас - почти гарантированно всё ок. Общество расширится до всякой гопоты, которая вчера впервые открыли учебник роберто иерузалимши, из-за чего общество (за редким исключением) перестанет быть таким милым и отзывчивым, появятся толпы говнофреймворков с мерзейшим АПИ, и не будут брать на работу без знаний десятка этих мудацких штук. Всё как в JS : )
https://habrahabr.ru/post/321864/
Disi