Будет ли Ruby когда-либо * быстро *?

Будет ли Ruby когда-либо видеть повышение производительности, как Javascript видел недавно? Может ли новая виртуальная машина сделать это действительно, очень быстро? Или мы должны предположить, что все преимущества Ruby имеют неизбежное снижение производительности?

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

Ответ 1

Йорг W Миттаг указал мне в направлении Rubinius, когда я спросил о деревьях трассировки, которые нашли свой путь к другим языкам сценариев. Проверьте их на более быстрый Ruby.

Как интересно, unladen-swallow пытается ускорить работу Python с помощью LLVM.

Интересный материал. Есть много неисследованных трюков для ускорения написания сценариев, но мне интересно, считают ли разработчики языка приоритетными для языковых функций и библиотек.

Ответ 2

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

Ruby 1.9 действительно должен быть о скорости CPython.

Ответ 3

Maglev - это рубиновая реализация, основанная на существующем двигателе Smalltalk, который нацеливался на верхушку масштабирования и использования.

Он разработан как "значительно быстрее", чем существующие реализаторы Ruby, вы можете смотреть разговор одним из Maglev Architects, интересно.

Таким же образом, что различные реализации Javascript работают быстрее или медленнее в разных браузерах, стоит отметить, что Ruby сам запускает почти в два раза быстрее на Linux и Windows.

Ответ 4

JRuby имеет компилятор jrubyc, который может создавать jvm.class файлы из рубиновых файлов. Я никогда не использовал его, только быстро просмотрел его, поэтому я не знаю, сколько из Ruby поддерживается для компиляции байткода. Если он скомпилирован до байт-кода, тогда jvm должен оптимизироваться так же, как и любой другой байт-код.

Ответ 5

Ну, там определенно много возможностей для улучшения. Здесь список контрольных времен для моделирования N-тела (математический алгоритм): http://shootout.alioth.debian.org/u32q/benchmark.php?test=nbody&lang=all

Ruby 1.9 занимает 34 минуты, тогда как один из более быстрых веб-серверных языков (С#) занимает всего 37 секунд. Таким образом, С# более 50 раз быстрее для этой конкретной задачи. Можно утверждать, что это не та задача, которую Ruby будет использовать в любом случае. Но все же существует вопрос о масштабируемости.

Чтобы Ruby стал намного быстрее, его действительно нужно скомпилировать. Это может быть точно так же, как двигатель V8 Javascript. Или это можно сделать больше как ASP.NET, который хранит "кэшированные" компиляции за кулисами. Другими словами,.NET обладает способностью компилироваться "на лету", но при этом вы заметите, что это занимает свое сладкое время. Но выигрыш в том, что он не нуждается в повторной компиляции до тех пор, пока код не изменится, и, как показывает вышеприведенный критерий, окончательный скомпилированный код выполняется очень быстро. Поэтому я бы подумал, что Ruby (или его вариант) будет лучше копировать .NET-технику в этом отношении.

Ответ 6

Да, Ruby будет значительно быстрее.

Новые Javascript-виртуальные машины доказывают, что динамический, слабо типизированный язык позволяет значительно скомпилировать существенные изменения в пути выполнения во время выполнения. LLVM обеспечивает платформо-агностическую основу, на которой это может произойти. Эти нововведения в конечном итоге будут внедрены во все языки сценариев.

MacRuby, Maglev, или Rubinius может первыми выходить на рынок с такой скоростью, но реализация C, вероятно, также попадет туда.

JRuby, следует отметить, что одержим скоростью и имеет несколько "Ruby-like" языки, которые позволяют разработчикам торговать некоторыми функциями для повышения производительности.

Честно говоря, главное, что Рубин возвращается, что для многих, многих целей он уже достаточно быстр. Если вы хотите решить проблему n-body, вам, вероятно, следует искать в другом месте. Но если вы хотите создать гладкое, поддерживаемое веб-приложение, Ruby позволит вам быстрее работать и с большой ремонтопригодностью. И ваши VC будут настолько впечатлены, что они дадут вам достаточно денег для масштабирования. В это время вы можете переписать свои данные, как встроенные C или Java.

Ответ 7

Да, Ruby может ускориться - по крайней мере, до такой степени, что это уже не проблема.

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

Почему? Если это медленнее, чем что-либо сопоставимое, то есть способ сделать это быстрее, так что это возможно. И с импульсом Ruby, он, вероятно, будет быстрее.

Ответ 8

Руби становится быстрее

В то время как jRuby часто сбивается в простых тестах, с включенной опцией оптимизации, он начинает хорошо выглядеть.

И официальный интерпретатор Ruby теперь YARV, хотя большинство людей еще не испытали его, потому что они все еще на 1.8.