Сравнение Lua с Mono

Я хотел провести небольшое исследование, но не смог найти никакой информации по этой теме.

Единственная информация, которую я нашел -> http://benchmarksgame.alioth.debian.org/u32/compare.php?lang=csharp&lang2=lua

И я не уверен, как я могу интерпретировать эту диаграмму. Если я прав, то в основном говорится, что Lua в 10 раз быстрее, чем Mono. Но использование памяти Mono примерно в 8 раз лучше, чем у Lua.

Что это говорит о производительности?

Сравнение Lua с Mono -> Преимущества/Недостатки

Изменить: [Разработка игр] Cryengine 3 использует C++/lua atm. Но некоторые ребята выпускают моно порт для этого движка. Я хорошо знаком с Моно. Но теперь я хотел провести небольшое исследование Lua, чтобы узнать, стоит ли изучать этот язык или мне следует придерживаться Mono.


person Maik Klein    schedule 04.06.2012    source источник
comment
возможный дубликат Встраивание: mono vs lua   -  person laurent    schedule 04.06.2012
comment
проверил вашу ссылку, и мой вопрос отличается. Я хочу сравнить язык в целом - скорость кодирования, производительность, кривая обучения и т. д.   -  person Maik Klein    schedule 04.06.2012
comment
Для меня эти графики выглядят как раз наоборот — C# быстрее, а Lua потребляет меньше памяти.   -  person Botz3000    schedule 04.06.2012
comment
О, ты прав :х. Надежна ли эта таблица?   -  person Maik Klein    schedule 04.06.2012
comment
@MaikKlein, я думаю, это может зависеть от того, что вы пытаетесь сделать, вашего опыта работы с Lua и / или C # и т. Д. Тесты, подобные приведенному по ссылке, в целом не очень полезны.   -  person laurent    schedule 04.06.2012
comment
[Разработка игр] Cryengine 3 использует C++/lua atm. Но некоторые ребята выпускают моно порт для этого движка. Я хорошо знаком с Моно. Но теперь я хотел провести небольшое исследование Lua, чтобы узнать, стоит ли изучать этот язык или мне следует придерживаться Mono.   -  person Maik Klein    schedule 04.06.2012
comment
@Maik Klein ››Надежна ли эта диаграмма?‹‹ Диаграмма представляет собой достоверную сводку того, сколько времени и памяти используется этими конкретными программами — запустите с этими входными данными, запустите с этими конкретными реализациями C# и Lua, запустите на этом ОС и это оборудование. Насколько велика разница между этими крошечными программами и тем, как они запускаются, и тем видом программы, которая вас интересует?   -  person igouy    schedule 04.06.2012
comment
Также см. LuaJIT luajit.org/performance_x86.html.   -  person igouy    schedule 04.06.2012


Ответы (2)


Вы сравниваете яблоки с апельсинами. C# — это статически типизированный язык, скомпилированный в CIL, который является языком байт-кода, запускаемым (или обычно JITted) виртуальной машиной и используется для разработки веб-приложений и автономных приложений. Lua — это язык сценариев с динамической типизацией, который обычно запускается интерпретатором и часто встраивается как расширяемый язык сценариев в более крупные приложения.

Кроме того, ваша интерпретация бенчмарка неверна. Гистограмма показывает, что программа Mono занимает примерно 1/10 времени для запуска по сравнению с эквивалентной программой Lua.

Тем не менее, этот вид микробенчмарка в значительной степени бесполезен. Не верьте мне на слово; прочтите что говорит об этом сама Shootout. Вы должны прочитать все это, но я вытащу несколько сочных цитат:

Производительность эталонного теста, даже если он получен из реальной программы, может не помочь предсказать производительность аналогичных программ, которые имеют другие горячие точки.

Использование интерпретируемого языка в среде с высокой пропускной способностью может показаться парадоксальным, но мы обнаружили, что время ЦП редко является ограничивающим фактором; выразимость языка означает, что большинство программ имеют небольшой размер и проводят большую часть своего времени в операциях ввода-вывода и собственного кода времени выполнения.

Языки программирования сравнивают друг с другом так, как будто их разработчики предназначали их для использования в одних и тех же целях — это не так.

Короче говоря: выбирайте свой язык, основываясь на том, хорошо ли он справляется с тем, что вы хотите с ним делать, позволяет ли он ясно выражать свои намерения, позволяет ли он писать чистый, поддерживаемый код; не основанный на каких-то в значительной степени бессмысленных цифрах.

person Thomas    schedule 04.06.2012
comment
Я просто задал этот вопрос, потому что у меня есть возможность использовать Lua или Mono для CryEngine 3 [GameDevelopment]. Я знаком с Mono, просто хотел посмотреть какие-то преимущества Lua. - person Maik Klein; 04.06.2012
comment
››по большей части бесполезный ... Вы должны прочитать все это ‹‹ Да, Майк должен прочитать все это и увидеть, что это не говорит о том, что это в значительной степени бесполезно :) - person igouy; 04.06.2012

Это говорит: яблоки зеленее, чем бананы.

Вы не можете просто сказать что-то вроде «Lua потребляет меньше памяти, чем C#, но требует примерно на 50% больше циклов процессора». Вы должны сравнить их в отношении вашего контекста, например. что вы хотите построить.

Если вы хотите вычислить 5*5, хорошо, Lua может быть быстрее (с точки зрения реализации). Но если вы хотите создать ERP-приложение со многими клиентами, я бы не рекомендовал Lua.

Поэтому мы не можем дать вам окончательный список преимуществ и недостатков, потому что это сильно зависит от того, что вы хотите делать.

person Matten    schedule 04.06.2012
comment
Языка LUA нет. Есть только Луа. Это имя собственное, а не аббревиатура. - person Nicol Bolas; 04.06.2012
comment
››5*5, ладно, Lua может быть быстрее‹‹ Похоже, вы не смотрели туда, куда указывал Майк. - person igouy; 04.06.2012