Вложение: mono vs lua

Мне интересно узнать о опыте людей с внедрением моно (реализация с открытым исходным кодом .NET) в приложении C/С++. Как распределить такое приложение и каковы зависимости? Я тестировал OS X, а моно - огромная структура (сотни МБ). Могут ли пользователи моего приложения нуждаться в этой большой структуре или ее можно удалить или все будет скомпилировано в основной исполняемый файл.

У меня ранее был опыт внедрения Lua в С++-приложение, и это работает очень хорошо, потому что я могу связать статически весь интерпретатор lua с моим основным исполняемым файлом. Поэтому у меня нет внешних зависимостей. Можно ли сделать что-то подобное с моно?

Любые люди Lua здесь могут комментировать, как они нашли моно по сравнению с Lua?

PS: Вложением я подразумеваю приложение С++, которое инициализирует моно-среду и загружает сборку .NET и выполняет ее, а затем позволяет осуществлять обмен данными между С# кодом в сборке и методами С++ в основном исполняемом файле.

Ответ 1

Вероятно, вам также стоит взглянуть на страницу Mono Small Footprint, в которой описывается, как вы можете внедрить меньшее время выполнения. Черт, они делают это сами с Moonlight.

Я надеюсь, что это поможет.

Ответ 2

Это вопрос 2 года. Таким образом, ситуация может измениться.

Для меня самым важным моментом был GC. Я включил Lua для интерактивных приложений и игр, потому что необходим дополнительный GC. В настоящее время Lua 5.1 имеет точный инкрементный GC, но я не мог найти никаких доказательств инкрементного или точного GC на Mono. Так что память течет (даже она очень крошечная!), И приложения будут бороться с перерывами.

Люди говорят, что GC-пауза может быть решена путем настройки некоторых параметров и объединения объектов, но по мере того, как я это испытывал, она никогда не будет решена без какого-либо подхода распределения GC с течением времени в GC. Generational GC является одним из алгоритмов распределения, но он слишком грубый и почти не помогает.

Потому что вы не можете управлять экземпляром жизненного цикла или повторным использованием, объединяя объекты, используемые в коде, а не ваши. (например, базовая библиотека классов)

Поэтому я не рекомендую платформу С# (как минимум, Mono или .NET) для интерактивных/(мягких) приложений реального времени.


Изменить

Я не знаю, представлен ли какой-либо инкрементный/параллельный подход к GC на Mono или .NET. Если вы уверены в том, что они предлагают тип GC, конечно, это нормально использовать:)