@ProLua

Страница 20 из 307
Мерлин
07.06.2016
16:29:56
И что? Какую проблему ты тут видишь? :3
Такую, что это чертвоски долго и неэффективно Это блин азы

Snusmumriken
07.06.2016
16:30:24
Такую, что это чертвоски долго и неэффективно Это блин азы
Lua не предназначена для работы с огромными массивами данных. Используй ffi.

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
В любом случае лучше алгоритмы юзать эффективные.
Это эффективно :3 Давайте сделаем бенчмарк.

Мерлин
07.06.2016
16:32:20
Lua не предназначена для работы с огромными массивами данных. Используй ffi.
Зато нам может понадобится делать такую операцию часто и быстро Вот тогда это заиграет новыми красками И вообще, конечно же есть такая штука, как преждевременная оптимизация, однако если много говнокодить, то быстро окажется, что всё работе очень медленно и херово Неожиданность, однако

Snusmumriken
07.06.2016
16:34:43
Конечно
Тогда зачем вообще нужен ipairs?

Мерлин
07.06.2016
16:35:10
Snusmumriken
07.06.2016
16:35:25
ИМХО не особо нужен
Ну и молодец :3

ИМХО не особо нужен
Тогда к тебе другой вопрос. Почему ты пишешь на медленной и скриптовой lua а не на асме или, на худой конец, сишке/фортране?

Мерлин
07.06.2016
16:37:55
Тогда к тебе другой вопрос. Почему ты пишешь на медленной и скриптовой lua а не на асме или, на худой конец, сишке/фортране?
Ещё я пишу на Go, C и Питоне и что? Если ты используешь медленный язык, то это не значит, что можно использовать неподходящие алгоритмы Это как-то нечистоплотно

Google
Snusmumriken
07.06.2016
16:38:46
Ещё я пишу на Go, C и Питоне и что? Если ты используешь медленный язык, то это не значит, что можно использовать неподходящие алгоритмы Это как-то нечистоплотно
Почему неподходящие? Прекрасно работают и удобны :3 Узкие места, конечно же, отдельно оптимизируются. Комфорт важнее скорости, в тех местах где это допустимо. Ты мог бы прочитать это у Гвидо.

Мерлин
07.06.2016
16:41:06
Snusmumriken
07.06.2016
16:44:36
Они конечно работают, ога Но работают они кое-как И когда масса говнокода становится критической - всё рушится к чертям
Говнокод - применение неподходящих для данного конкретного случая инструментов (а так же нарушение иерархии блоков кода, написание нечитаемой фигни и так далее). Есть такое прикольное правило: сначала пиши так чтобы было сразу понятно, а оптимизируй потом, и только критические участки, ибо преждевременная оптимизация делает из кода нечитаемую фигню. За преждевременную оптимизацию отрывают руки

Snusmumriken
07.06.2016
16:46:18
»применение неподходящих для данного конкретного случая инструментов Во-во
Тут не было указания случая :3 Абстрактный список. Когда не указывается длина, можно упрощать. Если бы я сказал, что этот список расположен на кластере серверов и занимает 900тб - другое дело

Кстати, и ты так и не указал своего подробного решения, без сдвигов. Если напишешь свой класс списков, которые будут удалять без сдвигов - вперед :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
Он нормальный. Сделан для ученых которым нафиг не нужно программировать, но нужен результат. Язык визуален. Представляет собой модули, между которыми проходят потоки данных в как-бы функциональном стиле. Очень мощная математическая база по обработке сигналов. Легко справляется с огромными потоками в реальном времени.
Поверь Я с этими учоными, не умеющими в программирование, сижу в одной лабе Тебе в страшном сне не увидеть то, что они пишут Это адъ Математика там есть вся, что нужна для простенькой обработки данных, но пипец какая медленная И упаси боже тебя использовать его "огромных потоков", да ещё в "реальном времени" Для этого есть а) матлаб б) fpga в) с++

На нём можно легко наговнокодить что-нибудь побыстрому и это будет работать С красивым интерфейсом Это да

Мерлин
07.06.2016
18:02:43
И многие сложные вещи делаются в нём очень просто но в остальном он ужасе

Ой, я вполне себе прогонял через многослойные персептроны кучу сырых данных, поступающих от камеры. Успешно.
Чот я сомневаюсь, что у тебя было как-то много данных Да, на нём делают компьютер вижн, лично видел eye-tracker Вытянуть в лабвью больше 30 кадров просто нереально И эти 30 кадров без всякой обработки

Snusmumriken
07.06.2016
18:04:33
В общем, на твоем месте я бы шел писать на асме и только на асме, идеально оптимизированный код. В противном случае, ты занимаешься выжиганием сахарных сердечек на торте паяльником

Snusmumriken
07.06.2016
18:06:52
Ну да, за столько лет, сишечка была доведена почти до совершенства. Но меня все равно интересует, что ты тут делаешь, и где твоя идеально оптимизированая операционная система :3

Сиплюсплюсочка не так совершена.

Мерлин
07.06.2016
18:07:54
Сиплюсплюсочка не так совершена.
прост в сишечку нормальных eigen не завезли И ещё кучу матановых библиотек

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

Snusmumriken
07.06.2016
20:06:15
х32 перерасход памяти, не забывай.

maxx
07.06.2016
20:06:45
если задачу решить важнее памяти, то сойдёт =)

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
Есть либы для истинной асинхронной многопоточности.

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
Ну я посмотреть зашёл зачем люди луа используют. Ну и по сравнению с девопс каналом у вас ещё не большой наплыв

Страница 20 из 307