Мерль
Snusmumriken
Snusmumriken
ИМХО не особо нужен
Тогда к тебе другой вопрос.
Почему ты пишешь на медленной и скриптовой lua а не на асме или, на худой конец, сишке/фортране?
Мерль
Мерль
Мерль
Snusmumriken
Кстати, и ты так и не указал своего подробного решения, без сдвигов. Если напишешь свой класс списков, которые будут удалять без сдвигов - вперед :3
Snusmumriken
У тебя там curr.remove().
Что это делает?
А потом замени в моём варианте table.remove на curr.remove, и получишь твой любимый оптимизированный но читабельный вариант.
Я давал пример логики, а ты мне про оптимизацию попёр.
Воистину, когда человек указывает собаке пальцем, собака смотрит на палец.
Мерль
Вот результаты бенчмарков. Разница в 40 раз, Карл, на ста тысячах элементов
Мерль
А вот исходник
Мерль
Мерль
Но тебе конечно проще назвать оппонента собакой и продолжать говнокодить, чем почитать хотя бы одну книжку для новичков в программировании, лол
Snusmumriken
Ничего себе как сложно :3
Ты попробуй поддерживать данный код.
Snusmumriken
Чому хотя бы класс не замутил?
Мерль
Лол
Если ЭТО для тебя сложно
То я даже не знаю
Может не стоит программировать?
А то сложна
Snusmumriken
Хех, я покажу кому-нибудь твой образец.
Мерль
А то вдруг там R-дерево
и всё
капут
сложна
:3
Snusmumriken
Это все оформляется в маленький класс с тремя с половиной методами.
Кстати, ты в курсе, что если ты непонятно написал, ты все равно что набыдлокодил?
Смешал в одну кучу всё подряд. Я сейчас оформлю по-человечески. Хоть увидишь как люди делают.
Мерль
Мда
Надо было методы прикрутить
Меня это от лабвью не отпустило до сих пор видимо
Ну впрочем этих листов пруд пруди
Во всех видах
Snusmumriken
Всё листом - быдлокод.
Ладно, расслабься.
Кстати, на лабвью отлично делаются модули и даже ясное ООП.
Событийное, правда.
Snusmumriken
Я на нём спокойно делал нейронные сети, персептроны и прочую лабуду. Даже мануалы курить не надо.
Мерль
На нём можно легко наговнокодить что-нибудь побыстрому и это будет работать
С красивым интерфейсом
Это да
Snusmumriken
Мерль
И многие сложные вещи делаются в нём очень просто
но в остальном он ужасе
Snusmumriken
В общем, на твоем месте я бы шел писать на асме и только на асме, идеально оптимизированный код.
В противном случае, ты занимаешься выжиганием сахарных сердечек на торте паяльником
Мерль
Мерль
Точнее си плюс плюсочка
Snusmumriken
Ну да, за столько лет, сишечка была доведена почти до совершенства.
Но меня все равно интересует, что ты тут делаешь, и где твоя идеально оптимизированая операционная система :3
Snusmumriken
Сиплюсплюсочка не так совершена.
Мерль
Snusmumriken
Ты слишком громко вопишь о скорости :3
Мерль
Тут речь не о скорости, а о банальной гигиене кода :3
Если ты привык говнокодить в таких мелочах, то значит будешь говнокодить и по-крупному
Snusmumriken
Ущербная экстраполяция, прости.
Это вообще ничего не значит.
Мерль
Это не экстраполяция, это личный опыт (
Snusmumriken
Только твой.
Или ты покрываешь всех людей?
Тем не менее. Стоит повторить собаку.
Snusmumriken
Да. Кстати. Твой метод жрёт в 32 раза больше памяти.
Обычная таблица на 100к элементов занимает 2мб, твой супер-список на 100к занимает 64мб памяти. Плюс ты лаконично обходишь время инициализации своего супер-списка, в сравнении с инициализацией обычной таблицы.
Где-то тут надувательство.
Snusmumriken
Он быстр, но его применение.. очень специфично. Или для очень маленьких списков (но тогда теряется разница прироста скорости), или для промышленных серверов, где докупить лишние 64гб - не проблема.
Нет, не вижу ничего плохого, используй это.
Но в игрушках на телефон я подключу ffi и стороннюю либу с плюсовыми динамическими векторами, в которые можно запихнуть структуру (для хранения огромной тайловой карты с кучей параметров для каждого тайла, например).
Тем не менее, я считаю что ты набыдлокодил в плане оформления кода, поддерживаемости и расхода памяти, занявшись предварительной оптимизацией.
Snusmumriken
Я посчитал время выполнения вместе с инициализацией.
Время на моём нетбуке:
твой список: 4.6с
обычная таблица: 21.8с
Разница уже всего лишь в пять раз.
Хм.
Maxx
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
В памяти все равно висит куча фигни лишней.
Попробуй прямо замерить время.
Особенно вместе с инициализацией. И увеличить размер обоих списков до сотни миллионов значений (советую поставить на ночь или уйти чай пить).
Maxx
https://gist.github.com/xogg/3e9f642e0bd6caf8b9ff348636c1204e
всё честно: за один проход создаёшь массив нужных, неудалённых индексов, и делаешь его проксёй к исходному массиву.
Maxx
сотню миллионов я буду ждать до утра наверное, и не факт, что до следующего =)
Snusmumriken
Я попробую на I7, разбив на корутины :3
Мерль
Snusmumriken
х32 перерасход памяти, не забывай.
Maxx
если задачу решить важнее памяти, то сойдёт =)
Мерль
Maxx
я б ещё reduce какой-нибудь рассмотрел, но его нужно параллелить
Мерль
На луа это сложновато
Maxx
угу, нужно обвязку снаружи делать
Мерль
ну, лучше просто друго язык взять
Мерль
Хотя тут же всё зависит от обвязки
Вроде бы в том же луа плагине для FAR реализованы неблокирующие зелёные потоки, причём с поддержкой многоядерности
Врочем я не пробовал, так что точно не скажу
Snusmumriken
Есть либы для истинной асинхронной многопоточности.
Snusmumriken
http://lua-users.org/wiki/MultiTasking
Snusmumriken
Если что. Lua не работает в одиночку. Всегда есть сишная сторона. Её можно модифицировать, импортировать dll/so с многопоточностью и так далее.
Snusmumriken
Не ругайся.
Тарантул, кстати, хорош.
Snusmumriken
О, кстати, тут один товарищ хотел макросы на lua? Есть metalua.
Примерная работа:
Snusmumriken
Snusmumriken
А так - да, можно делать отдельный загрузчик, который проходится по коду регулярками. Может быть даже на основе самого кода, в котором определена зона замен.
void *
Спасибо, поковыряю на досуге
void *
фигасе наплыв
Snusmumriken
Та же фигня
Alexander
Выключите свет
Snusmumriken
Что они все тут делают?
Хотят набраться мудрости по кодингу и посмотреть мемасы?
Михаил
Ну я посмотреть зашёл зачем люди луа используют. Ну и по сравнению с девопс каналом у вас ещё не большой наплыв
Uncel
Alexander =̂• ̺ •̂=
Uncel
Обмазываться вставками с avx