Andrey
на луе
Andrey
мунскрипт - это извращение конечно
Andrey
любая поделка на луа использует скорость джита 😊
Andrey
Вы о книге или есть веб-ресурс?
про библиотеки. уже готовые к использованию
Nikola
Благодарю.
Nikola
Вкусно, спасибо
Snusmumriken
Питон на микрухах. Кхм. Ну у каждого свои любимые сорта извращений. Луа в общем-то в такое же извращение, но чуть-чуть эффективнее. Для тех кто в танке: это всё равно что запускать windows 95 на принтере. Технически возможно, можно но о боже мой.
Serezha
Не надо ничего считать на микрухах. Надо лампочками мигать :) Любой интерпретатор подойдет.
Anonymous
а что там считатть то? Lua то что быстрее и так понятно, но питон проще и удобнее вот его и используют. если речь о микроконтроллерах, то там на ссколько я помню не обычный питон а несколько изменённый
Anonymous
не... я имею в виду проще синтаксически
🐅🤦‍♂️
https://habr.com/ru/company/mailru/blog/459464/
Мне сложно понять Роберто, он затрагивает многие вещи в которых я не разбираюсь, называет несколько довольно экзотических языков которые на него повлияли, рассказывает про проблемы декремента указателя в адресной арифметике на C. Спасибо, интересная статья, перечитаю с удовольствием.
Mikhail
записал видео урок про еще 1 Lua Debugger в Roblox (после видео про отладчик в ZeroBrane Studio). Оказалось много общего. https://www.youtube.com/watch?v=3TGIlapXuqM
.
Ребят, сколько в string максимальное количество символов?
Mark ☢️
https://www.opennet.ru/opennews/art.shtml?num=51126
Mark ☢️
Доступен выпуск проекта Tinygo 0.7.0, в рамках которого развивается компилятор языка Go для областей, в которых необходимо компактное представление результирующего кода и низкое потребление ресурсов, таких как микроконтроллеры и компактные однопроцессорные системы. Код распространяется под лицензией BSD.
Mark ☢️
Отаке! то Фабрис Беллар джс запилит мелкий и быстрой, то вот для ги запилили LLVM
Mark ☢️
луа может стать ниужной
Mark ☢️
(я набросил и ушёл)
Andrey
Ребят, сколько в string максимальное количество символов?
точно не помню но по моему не ограничено. Или ограничено размером ОЗУ доступного.
.
точно не помню но по моему не ограничено. Или ограничено размером ОЗУ доступного.
Чет у меня переполнение буфера, грешил на ограничение строки! Спасибо!
Serezha
Отаке! то Фабрис Беллар джс запилит мелкий и быстрой, то вот для ги запилили LLVM
го изначально и был на ллвм. более того - он и сейчас доступен при сборке того же ОпенВРТ если оч хочется компилякать в роутер свои бинарники
Serezha
для компиляторов такие мелкие реализации не очень актуальны тк ты можешь кросскомпилировать с большой машины на любые другие мелкие платформы беззаботно
🐅🤦‍♂️
Го даёт быстрый компактный машинный код?
🐅🤦‍♂️
У исполняемого файла большой рантайм или он самодостаточный? Или можно настроить? Подскажите если есть опыт.
Serezha
Го даёт быстрый компактный машинный код?
быстрый и компактный - все зависимости статически слинкованы внутри бинарника.
Serezha
но все относительно - посмотрел на свою утилитку для перегонки XML файлов в SQL для последующей загрузки в базу - исполнимый файл весит 2.5 MB
Serezha
это базовый рантайм гошки и либа для манипулирования XML внутри - имхо норм, этот файл можно взять как есть и запустить на любой убунте не доставляя ничего больше из гошного окружения
Mark ☢️
почему
Mark ☢️
быстрый и компактный - все зависимости статически слинкованы внутри бинарника.
не быстрый так ка оптимизации лишь примитивные и нихрена не компактный.
Serezha
ну ясень пень старые деды которые на ассемблере и сишке пишут - вылезут и будут ворчать 🙂
Serezha
а если сравнивать с мейнстримом сейчас - JVM, Python и тд - то однозначно быстрые и компактные программы получаются которые можно стартовть прямо в голом контейнере с alpine linux ничего не подтягивая
Serezha
я у себя вот такой тест на молотилку чиселок гонял когда хотел понять насколько го быстрее луаджита https://news.ycombinator.com/item?id=19750507
Serezha
Когда в 25 уже дед D:
на хабре недавно писали про код возняка который на 8 битном процессоре реализовал все арифметические операции над флоатами в 170 байт подпрограмме чтоле
Serezha
исходя из этих критериев и современные либы на сишке покажутся монстрами 🙂
Max
я у себя вот такой тест на молотилку чиселок гонял когда хотел понять насколько го быстрее луаджита https://news.ycombinator.com/item?id=19750507
там просто плохой Lua код. например, на SciMark (тоже числомолотилка) LuaJIT у одного небезызвестного разработчика был в 1.5 раза медленнее, чем С
Serezha
там просто плохой Lua код. например, на SciMark (тоже числомолотилка) LuaJIT у одного небезызвестного разработчика был в 1.5 раза медленнее, чем С
могу сказать за результаты на своем компьютере (рендерил картинку с меньшими размерами этим тестом)
Serezha
имплементация на го 1.5 сек
Serezha
идиоматичная имплементация на луа 25 сек
Serezha
переписанная захаканная луа 8 сек
Max
идиоматичная имплементация на луа 25 сек
Что есть идиоматичная имплементация?
Serezha
та которая на гитхабе этого теста - все матрицы в таблицах итд
Serezha
цифры конечно для луаджита - на чистой луа сдохнешь пока результат дождешься
Serezha
но по размерам так : бинарник луаджита 570К, а файлик бинарный гошки 2М
Max
та которая на гитхабе этого теста - все матрицы в таблицах итд
Можно создавать кучу временных таблиц, а можно всё считать in-place
Serezha
Можно создавать кучу временных таблиц, а можно всё считать in-place
ну итак небольшой разрыв с го - я считаю вполне себе успех для луаджит
Serezha
реализация на Си : 0.3 сек при размере 13К бинарника
Max
ну итак небольшой разрыв с го - я считаю вполне себе успех для луаджит
Ну потому что на го и си всё считается in-place (раз уж разницу хэш-таблица vs структура никуда не деть)
Serezha
Ну потому что на го и си всё считается in-place (раз уж разницу хэш-таблица vs структура никуда не деть)
ну вот когда все развернешь из таблиц и получишь вместо 25 сек -> 8 сек
Serezha
но теряется суть и красота использования мощного и компактного языка типа луа с перегрузкой операторов и красивыми абстракциями 🙂
Serezha
прочекал тест на обычной луа получилось отставание в 4-6 раз от джита что тоже довольно неплохо
Serezha
Но если ты готов писать на го, где всего этого нет, то не вижу проблемы
ну го это что то вроде меньшего из зол среди типизированных языков
Serezha
дело даже не столько в скорости как именно в условной безопасности которую дает строго типизированный код еще на этапе компиляции
Serezha
я у себя вот такой тест на молотилку чиселок гонял когда хотел понять насколько го быстрее луаджита https://news.ycombinator.com/item?id=19750507
сравнил с питоном - стандартный интерпретатор такие же цифры как puc lua показал а вот pypy оказался в джва раза быстрее луаджита
Roman
@Fearan а libmoon в проде нормально?
Anton
@Fearan а libmoon в проде нормально?
Так я ж говорю - недосидел я до внедрения. По отзывам в интернетах - нормально.
Roman
Так я ж говорю - недосидел я до внедрения. По отзывам в интернетах - нормально.
Ну я видел примерно такое же, но по дефолту там ему надо модулей докидывать при сборке и компиляет всякие rte статикой
Anton
Ога. Но на круг все равно дешевле дофичивать, чем на голом си. Когда появится время - все-таки сделаю приседание, и сговнякаю на нем парсер, из спортивного интереса.
Egor
Приветы. Мне тут пример кидали, как лучше делать (или как он делает) либы, и я его потерял, может кто подсказать, как лучше сделать, чтобы это была либа, но либа разносторонняя, т.е. не выполняет одну какую-то функцию а несколько и разноплановых?
Egor
опять как-то сумбурно написал -_-
Snusmumriken
Карочи, основной прекол: в таблицу можно запихнуть функции (и другие таблицы, в т.ч. с функциями), а require умеет в return. Это всё что нужно знать.
Egor
Карочи, основной прекол: в таблицу можно запихнуть функции (и другие таблицы, в т.ч. с функциями), а require умеет в return. Это всё что нужно знать.
такой вопрос (просто не знаю как на луа проверить), код local myvar = {} function myvar.myfun() .. end --- вот это глобальное или оно внутри локальной переменной myvar?
Egor
.
и да, спасибо
Snusmumriken
Не глобальное, внутри локальной myvar.
Snusmumriken
Опа, а теперь мне стало интересно, можно ли писать function foo.bar.baz() ... end, скорее всего нет но чем чёрт не шутит.
Snusmumriken
Офигеть. Можно. С методами, правда, это не сработает, надо писать self.
Snusmumriken
Но вывод следующий: local lib = {} lib.graphics = {} function lib.graphics.draw(something) blabla end function lib.graphics.newText(text) return newText(text) end return lib