Причины не компилировать
Получив проект Ruby, я скептически относился к решению использовать Ruby из-за производительности.
Я был рад обнаружить JRuby с его интеграцией с Java. Это значительно облегчило мне проект. И теперь я был еще более щекотан еще больше, чтобы обнаружить, что JRuby может быть скомпилирован в байт-код Java.
С эталонными показателями вот так:
fib (30) Ruby: 1,67 с
fib(30) JRuby interp (клиентская виртуальная машина): 3.93s
fib(30) JRuby interp (виртуальная машина сервера): от 2,28 до 2,08 с
fib (30) JRuby скомпилирован (клиентская виртуальная машина): от 1,89 до 1,79 с
fib (30) JRuby скомпилировано (серверная виртуальная машина): от 1,66 до 0,86 с
Теперь я очень взволнован нашим выбором JRuby здесь. Есть ли какие-либо недостатки или причины, по которым вы не скомпилировали бы для производственной версии?
2 ответа
Распределение и установка облегчили бы мне это решение: как системный администратор, я бы предпочел распространять только файл.JAR, который может работать на многих JRE, чем распределять работающий экземпляр JRuby (который отличается для разных ОС, для пример) и мой исходный код. Кроме того, вы уже продемонстрировали, что AOT-скомпилированный код работает быстрее, чем интерпретируемый /JIT, поэтому все больше причин распространять скомпилированную версию.
Ruby очень быстро развивается (если вы знакомы с его стилем).
Это не так быстро, чтобы бежать, но это обычно не большой минус. Это достаточно быстро для большинства рабочих нагрузок, даже для больших веб-сайтов.
Решение не должно быть основано на скорости выполнения - если у вас нет статистики, чтобы сказать, что люди, как ожидают, будут недовольны производительностью - но скорее простота развертывания.
Если развертывание приложений Ruby было достигнуто вашими предшественниками, то оставьте его Ruby.
Если развертывание в JVM проще, сделайте это.