Snusmumriken
07.06.2016
16:29:33
Мерлин
07.06.2016
16:29:56
Snusmumriken
07.06.2016
16:30:24
The Dude
07.06.2016
16:30:53
В любом случае лучше алгоритмы юзать эффективные.
Google
The Dude
07.06.2016
16:31:04
Ffi нет в обычной луа.
Snusmumriken
07.06.2016
16:31:27
The Dude
07.06.2016
16:31:37
Мерлин
07.06.2016
16:32:20
Snusmumriken
07.06.2016
16:34:19
Мерлин
07.06.2016
16:34:27
Snusmumriken
07.06.2016
16:34:43
Конечно
Тогда зачем вообще нужен ipairs?
Мерлин
07.06.2016
16:35:10
Snusmumriken
07.06.2016
16:35:25
ИМХО не особо нужен
Тогда к тебе другой вопрос.
Почему ты пишешь на медленной и скриптовой lua а не на асме или, на худой конец, сишке/фортране?
Мерлин
07.06.2016
16:37:55
The Dude
07.06.2016
16:38:14
Эффективные алгоритмы везде пригодятся.
Google
Snusmumriken
07.06.2016
16:38:46
Мерлин
07.06.2016
16:41:06
Snusmumriken
07.06.2016
16:44:36
Мерлин
07.06.2016
16:44:59
Snusmumriken
07.06.2016
16:46:18
Кстати, и ты так и не указал своего подробного решения, без сдвигов. Если напишешь свой класс списков, которые будут удалять без сдвигов - вперед :3
У тебя там curr.remove().
Что это делает?
А потом замени в моём варианте table.remove на curr.remove, и получишь твой любимый оптимизированный но читабельный вариант.
Я давал пример логики, а ты мне про оптимизацию попёр.
Воистину, когда человек указывает собаке пальцем, собака смотрит на палец.
Мерлин
07.06.2016
17:44:18
А вот исходник
Но тебе конечно проще назвать оппонента собакой и продолжать говнокодить, чем почитать хотя бы одну книжку для новичков в программировании, лол
Snusmumriken
07.06.2016
17:50:31
Ничего себе как сложно :3
Ты попробуй поддерживать данный код.
Чому хотя бы класс не замутил?
Мерлин
07.06.2016
17:52:00
Лол
Если ЭТО для тебя сложно
То я даже не знаю
Может не стоит программировать?
А то сложна
Snusmumriken
07.06.2016
17:52:28
Хех, я покажу кому-нибудь твой образец.
Мерлин
07.06.2016
17:52:32
А то вдруг там R-дерево
и всё
капут
сложна
:3
Snusmumriken
07.06.2016
17:54:23
Это все оформляется в маленький класс с тремя с половиной методами.
Кстати, ты в курсе, что если ты непонятно написал, ты все равно что набыдлокодил?
Смешал в одну кучу всё подряд. Я сейчас оформлю по-человечески. Хоть увидишь как люди делают.
Мерлин
07.06.2016
17:54:46
Мда
Надо было методы прикрутить
Меня это от лабвью не отпустило до сих пор видимо
Ну впрочем этих листов пруд пруди
Во всех видах
Snusmumriken
07.06.2016
17:55:47
Всё листом - быдлокод.
Ладно, расслабься.
Кстати, на лабвью отлично делаются модули и даже ясное ООП.
Событийное, правда.
Мерлин
07.06.2016
17:56:17
Snusmumriken
07.06.2016
17:58:28
Google
Snusmumriken
07.06.2016
18:01:17
Я на нём спокойно делал нейронные сети, персептроны и прочую лабуду. Даже мануалы курить не надо.
Мерлин
07.06.2016
18:01:19
На нём можно легко наговнокодить что-нибудь побыстрому и это будет работать
С красивым интерфейсом
Это да
Snusmumriken
07.06.2016
18:02:36
Мерлин
07.06.2016
18:02:43
И многие сложные вещи делаются в нём очень просто
но в остальном он ужасе
Snusmumriken
07.06.2016
18:04:33
В общем, на твоем месте я бы шел писать на асме и только на асме, идеально оптимизированный код.
В противном случае, ты занимаешься выжиганием сахарных сердечек на торте паяльником
Мерлин
07.06.2016
18:05:34
Точнее си плюс плюсочка
Snusmumriken
07.06.2016
18:06:52
Ну да, за столько лет, сишечка была доведена почти до совершенства.
Но меня все равно интересует, что ты тут делаешь, и где твоя идеально оптимизированая операционная система :3
Сиплюсплюсочка не так совершена.
Мерлин
07.06.2016
18:07:54
Snusmumriken
07.06.2016
18:09:20
Ты слишком громко вопишь о скорости :3
Мерлин
07.06.2016
18:10:08
Тут речь не о скорости, а о банальной гигиене кода :3
Если ты привык говнокодить в таких мелочах, то значит будешь говнокодить и по-крупному
Snusmumriken
07.06.2016
18:10:46
Ущербная экстраполяция, прости.
Это вообще ничего не значит.
Мерлин
07.06.2016
18:12:31
Это не экстраполяция, это личный опыт (
Snusmumriken
07.06.2016
18:14:35
Только твой.
Или ты покрываешь всех людей?
Тем не менее. Стоит повторить собаку.
Да. Кстати. Твой метод жрёт в 32 раза больше памяти.
Обычная таблица на 100к элементов занимает 2мб, твой супер-список на 100к занимает 64мб памяти. Плюс ты лаконично обходишь время инициализации своего супер-списка, в сравнении с инициализацией обычной таблицы.
Где-то тут надувательство.
Он быстр, но его применение.. очень специфично. Или для очень маленьких списков (но тогда теряется разница прироста скорости), или для промышленных серверов, где докупить лишние 64гб - не проблема.
Нет, не вижу ничего плохого, используй это.
Но в игрушках на телефон я подключу ffi и стороннюю либу с плюсовыми динамическими векторами, в которые можно запихнуть структуру (для хранения огромной тайловой карты с кучей параметров для каждого тайла, например).
Тем не менее, я считаю что ты набыдлокодил в плане оформления кода, поддерживаемости и расхода памяти, занявшись предварительной оптимизацией.
Google
Snusmumriken
07.06.2016
19:09:58
Я посчитал время выполнения вместе с инициализацией.
Время на моём нетбуке:
твой список: 4.6с
обычная таблица: 21.8с
Разница уже всего лишь в пять раз.
Хм.
maxx
07.06.2016
20:00:49
list 100000 samples, average 0.043713 deviation 0.002519
array 100000 samples, average 2.043139 deviation 2.032166
ghost 100000 samples, average 0.024545 deviation 0.002318
похоже, можно ещё быстре, если вообще ничего не удалять =)
Snusmumriken
07.06.2016
20:02:19
В памяти все равно висит куча фигни лишней.
Попробуй прямо замерить время.
Особенно вместе с инициализацией. И увеличить размер обоих списков до сотни миллионов значений (советую поставить на ночь или уйти чай пить).
maxx
07.06.2016
20:04:34
https://gist.github.com/xogg/3e9f642e0bd6caf8b9ff348636c1204e
всё честно: за один проход создаёшь массив нужных, неудалённых индексов, и делаешь его проксёй к исходному массиву.
сотню миллионов я буду ждать до утра наверное, и не факт, что до следующего =)
Snusmumriken
07.06.2016
20:05:32
Я попробую на I7, разбив на корутины :3
Мерлин
07.06.2016
20:05:50
Snusmumriken
07.06.2016
20:06:15
х32 перерасход памяти, не забывай.
maxx
07.06.2016
20:06:45
если задачу решить важнее памяти, то сойдёт =)
Мерлин
07.06.2016
20:07:03
maxx
07.06.2016
20:07:25
я б ещё reduce какой-нибудь рассмотрел, но его нужно параллелить
Мерлин
07.06.2016
20:07:53
На луа это сложновато
maxx
07.06.2016
20:08:13
угу, нужно обвязку снаружи делать
Мерлин
07.06.2016
20:08:28
ну, лучше просто друго язык взять
Хотя тут же всё зависит от обвязки
Вроде бы в том же луа плагине для FAR реализованы неблокирующие зелёные потоки, причём с поддержкой многоядерности
Врочем я не пробовал, так что точно не скажу
Snusmumriken
08.06.2016
09:50:45
Есть либы для истинной асинхронной многопоточности.
The Dude
08.06.2016
09:54:49
Snusmumriken
08.06.2016
09:57:27
http://lua-users.org/wiki/MultiTasking
Если что. Lua не работает в одиночку. Всегда есть сишная сторона. Её можно модифицировать, импортировать dll/so с многопоточностью и так далее.
The Dude
08.06.2016
11:51:00
Сука, ебаныц гугл.
Google
The Dude
08.06.2016
11:51:10
http://devconf.ru/ru/offers/offer/179
Snusmumriken
08.06.2016
13:19:00
Не ругайся.
Тарантул, кстати, хорош.
О, кстати, тут один товарищ хотел макросы на lua? Есть metalua.
Примерная работа:
А так - да, можно делать отдельный загрузчик, который проходится по коду регулярками. Может быть даже на основе самого кода, в котором определена зона замен.
Плюшка
08.06.2016
23:47:28
Спасибо, поковыряю на досуге
фигасе наплыв
Snusmumriken
17.06.2016
06:58:46
Та же фигня
Alexander
17.06.2016
06:59:01
Выключите свет
Snusmumriken
17.06.2016
06:59:30
Что они все тут делают?
Хотят набраться мудрости по кодингу и посмотреть мемасы?
Михаил
17.06.2016
07:00:41
Ну я посмотреть зашёл зачем люди луа используют. Ну и по сравнению с девопс каналом у вас ещё не большой наплыв
Uncel
17.06.2016
07:01:13