Язык сценариев на скомпилированный язык или чистый скомпилированный язык, что быстрее?[закрыто]
-
21-12-2019 - |
Вопрос
Недавно я закодировал приложение в jruby и создал из него файл .jar и развернул его в tomcat.Я также прочитал статью о jruby, в которой говорится "Jruby- масштабируемость java и простота ruby".
Здесь я хочу знать, обеспечивает ли подобное кодирование в jruby такую же масштабируемость и производительность, как прямое кодирование на java?
Точно так же использование расширения ruby для запуска кода c на ruby дает ту же производительность, что и прямое кодирование на c.
Спасибо
Решение
(Отказ от ответственности:возможно, это не полный ответ, но он был слишком длинным для комментария)
Хотя у меня практически нет опыта работы с реализацией JRuby в частности, динамические языки, реализованные в JVM, имеют свои ограничения с точки зрения скорости, которую вы можете получить по сравнению с тем, что вы получили бы, если бы кодировали непосредственно на Java.
Насколько я понимаю, это происходит из-за компромиссных реализаций клиентского языка (Руби, Clojure ( Клоджур ), Джитон, и т.д.) Должны быть сделаны, чтобы "имитировать" их внутреннюю работу на хост-платформе (в данном случае JVM ( Совместное предприятие )).Возможно, в наиболее распространенных сценариях разница в производительности не так уж и плоха, поскольку в JVM задействована оптимизация HotSpot, но когда дело доходит до получения производительности Java-подобного кода, вам, возможно, потребуется углубиться в детали языковой реализации, чтобы обойти некоторые из ее ограничений.
В случае с Рубин расширения в C, то, что вы на самом деле выполняете, - это машинный код (машинный язык), который изначально был закодирован на C, но который вы можете вызвать из своего Ruby-кода.При запуске Руби код, на котором вы программируете, является Рубин, который должен быть скомпилирован для Java байт-код, который выполняется на JVM ( Совместное предприятие ), который преобразует это в операции в собственной операционной системе.Что-то аналогичное Ruby/C было бы в данном случае JRuby/Java, это было бы вызовом некоторым Java код, который изначально был написан на Java от вашего Руби программа.
Редактировать
Это Обсуждение упоминает некоторые моменты, которые я включил выше, и более подробное объяснение некоторых других интересных моментов.