Язык сценариев на скомпилированный язык или чистый скомпилированный язык, что быстрее?[закрыто]

StackOverflow https://stackoverflow.com//questions/23044498

Вопрос

Недавно я закодировал приложение в 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 от вашего Руби программа.

Редактировать

Это Обсуждение упоминает некоторые моменты, которые я включил выше, и более подробное объяснение некоторых других интересных моментов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top