• XSS.stack #1 – первый литературный журнал от юзеров форума

LUA VS GO многопоточность

Статус
Закрыто для дальнейших ответов.

Ar3s

Старожил форума
Легенда
Регистрация
30.12.2004
Сообщения
3 357
Реакции
1 404
Добрый день друзья!
Один мой опытный и очень хороший товарищ пару лет назад сказал, что если необходимо получить качествунную многопоточность, то лучше и надежнее луа я ничего не найду.
Сейчас возникла необходимость поднять некий сервис который в 50 потоков/сек будет опрашивать некий API.
Нужно отслеживать потоки и делать их максимально отказоустойчивыми. Вот и вспомнился данный разговор. Сижу и думаю, то ли на GO делать то ли на LUA смотреть.
Что бы вы посоветовали из своего опыта?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Добрый день друзья!
Один мой опытный и очень хороший товарищ пару лет назад сказал, что если необходимо получить качествунную многопоточность, то лучше и надежнее луа я ничего не найду.
Сейчас возникла необходимость поднять некий сервис который в 50 потоков/сек будет опрашивать некий API.
Нужно отслеживать потоки и делать их максимально отказоустойчивыми. Вот и вспомнился данный разговор. Сижу и думаю, то ли на GO делать то ли на LUA смотреть.
Что бы вы посоветовали из своего опыта?
Однозначно Go скорость выполнения будет выше, чем Lua.
 
Поясни почему? И то и то компилируемые языки. Lua компилятор более старый, но тем не менее выдает очень годные результаты.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Go - компилируемый многопоточный язык программирования, когда Lua скриптовой. Я думаю что не стоит сравнивать два разных языка небо и землю. С таким же успехом в место Lua можно использовать любой другой скриптовой язык. TCL\Perl\Ruby\Python\PHP любой из них можно в exeшник сделать...

Я бы выбрал именно Go. Для многопоточного\асинхронного программирования
 
Как бы я не любил go но тут я с тобой weaver не соглашусь! lua куда быстрее будет в многопоточности, для этого он и был создать по идёи и по этому его и пихают в разные php и так далее чтобы быстрее обрабатывал данные.
Но если писать с нуля я бы брал для таких целей erlang этому языку в многопоточности нет равных....
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Я всё равно буду топить за Go!!

Выдержка из вики
Lua — это процедурный динамически типизированный модульный язык с автоматическим управлением памятью. Включает базовые элементы для поддержки функционального и объектного стилей программирования. Таким образом, Lua можно называть мультипарадигменным языком. Встроенные средства параллельного программирования позволяют писать многопоточные программы только средствами языка, не обращаясь к API операционной системы или внешним библиотекам. Так как основным назначением Lua является встраивание, она имеет эффективные средства межъязыкового взаимодействия, ориентированные, главным образом, на вызов библиотек Си и на работу в Си-окружении
Встраимость а не многопоточность гг

Не поверю что скиптовой язык по скорости превзайдет компилируемый.

Язык Go разрабатывался как язык программирования для создания высокоэффективных программ, работающих на современных распределённых системах и многоядерных процессорах.

Этот топ превратится в холивар надо сделать тест. И посмотреть
 
Этот топ превратится в холивар надо сделать тест. И посмотреть
С меня $ на пиво за тест. Сделай с erlang тоже, прикольно было бы посмотреть на сколько он быстрее...
 
Выражу поддержку Golang. Особенно в плане горутин с отказоустойчивостью по средствам перехвата паники и перезапуска обработчика
 
Пожалуйста, обратите внимание, что пользователь заблокирован
С меня $ на пиво за тест. Сделай с erlang тоже, прикольно было бы посмотреть на сколько он быстрее...

kerberos Ты с пивом поспешил)) С Lua мне не довелось дела иметь. Не понятно как их тестировать при равных условиях. Мне тут подсказали, что если на луа можно сервер завести, то можно устроить тест, но без оберток т.е голый Lua и Go...
Запустить на обоих языках сервер и загрузить его одинаковой работой. Чтобы тест был максимально честным.
 
Идея хорошая. Но тест тесту рознь.
Мы можем просто в 10 потоках с одного и того же сервака тянуть одну и ту же информацию в цикле. И смотреть на скорость обработки и получения данных. На падения. На зависания потоков. На нагрузку на проц.
А можем открыть сокеты и слать в них хлам заставляя вычислять каку-ю либо функцию на основании полученных данных. Возвращать ответ. И все в большом количестве потоков.
И вроде оба теста схожи, но в корне разные.
 
И да и нет. После компилятора и то и другое собирается в бинарник. А значит условия работы равны.
Давай начнем сначала. Мой знакомый с пеной у рта заверял меня, что круче чем у lua нет многопоточности. Правда, было это довольно давно.
Сейчас появился и сильно стал популярен GO. Он изначально точился под многопоточность и многоядерность. Соответственно, должен иметь значительную оптимизацию.
Что касается питона... В зад бы кому загнать его многопоточность. То еще УГ. Настрадался в свое время.

Я согласен что тема больше холиварная, но была надежда, что у нас имеются практики, испробовавшие и первое и второе. И имеющие четкий ответ на мучающий меня вопрос. К сожалению нет.
Дабы не разводить дальнейший холивар - предлагаю тему закрыть. Спасибо всем кто отписался и высказал свое мнение.
 
OpenMP надстройка над той же winapi.
Не мучайте мозги, за вас уже подумали 100500 индусов кодеров которые писали винду.
 
Статус
Закрыто для дальнейших ответов.
Верх