Почему люди говорят, что Ruby является медленным? [закрытый]

184
задан 2 revs, 2 users 100% 17 September 2010 в 15:25
поделиться

9 ответов

Почему Ruby считается медленным?

Потому что, если вы запускаете стандартные тесты между Ruby и другими языками, Ruby проигрывает.

Я не считаю Ruby медленным, но опять же, я просто использую его для создания простых приложений CRUD и корпоративных блогов. Какие проекты подойдут. Мне нужно действовать, прежде чем я обнаружу, что Ruby становится медленным? Или эта медлительность всего лишь влияет на все языки программирования ?

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

Помните, что большая часть обработки в ваших веб-приложениях на самом деле выполняется программным обеспечением, разработанным на C., например. Apache, Thin, Nginx, SQLite, MySQL, PostgreSQL, многие библиотеки синтаксического анализа, RMagick, TCP / IP и т. Д. - это программы на языке C, используемые Ruby. Ruby обеспечивает связующее звено и бизнес-логику.

Какие у вас есть варианты как у Ruby программиста, если вы хотите иметь дело с этой "медлительностью"?

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

Какая версия Ruby лучше всего подойдет для таких приложений, как Stack Overflow , где скорость критична, а трафик интенсивен?

На этот вопрос ответили другие люди - JRuby, IronRuby, REE заставит Ruby-часть вашего приложения работать быстрее на платформах, которые могут позволить себе виртуальные машины.И поскольку часто не Ruby вызывает замедление, а архитектура вашей компьютерной системы и архитектура приложений, вы можете делать такие вещи, как репликация базы данных, несколько серверов приложений, балансировка нагрузки с помощью обратных прокси, HTTP-кеширование, memcache, Ajax, кеширование на стороне клиента и т. Д. Все это не является Ruby.

Наконец, я не могу найти много новостей о Ruby 2.0 - я так понимаю, что до этого осталось несколько лет?

Большинство людей ждут Ruby 1.9.1. Сам жду Rails 3.1 на Ruby 1.9.1 на JRuby.

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

184
ответ дан 23 November 2019 в 05:56
поделиться

Прежде всего, медленнее, чем ? C? Python? Давайте получим некоторые числа в компьютерной языковой тестовой игре :

Почему Ruby считается медленным?

Зависит от того, кого вы спросите. Вам могут сказать, что:

  • Ruby - это интерпретируемый язык , и интерпретируемые языки будут медленнее, чем скомпилированные
  • Ruby использует сборку мусора (хотя C #, который также использует сборку мусора, на два порядка опережает Ruby, Python, PHP и т. д.в более алгоритмических и менее требовательных к выделению памяти тестах выше)
  • Вызов методов Ruby выполняется медленно (хотя из-за утиной печати они, возможно, быстрее, чем в строго типизированных интерпретируемых языках)
  • Ruby (за исключением JRuby) не поддерживает истинную многопоточность
  • и т. Д.

Но опять же, медленно по отношению к чему? Ruby 1.9 примерно так же быстр, как Python и PHP (с трехкратным коэффициентом производительности) по сравнению с C (который может быть до 300 раз быстрее), поэтому приведенное выше (за исключением соображений потоковой передачи, если ваше приложение сильно зависит от этого аспекта) ) носят в основном академический характер.

Какие у вас есть варианты как программиста на Ruby, если вы хотите справиться с этой «медлительностью»?

Пишите для масштабируемости и добавляйте больше оборудования (например, памяти)

Какая версия Ruby подойдет лучше всего подойдет ли такое приложение, как Stack Overflow, где скорость критична, а трафик интенсивен?

Что ж, REE (в сочетании с Passenger ) будет очень хорошим кандидатом.

121
ответ дан 23 November 2019 в 05:56
поделиться

Джоэл о программном обеспечении - пересмотр производительности Ruby довольно хорошо объясняет это. Хотя может быть устаревшим ...

Я бы порекомендовал просто придерживаться его, поскольку вы привыкли к Ruby on Rails,
, если вы когда-нибудь столкнетесь с проблемой производительности, вы можете пересмотреть вариант использования другого язык и рамки.

В этом случае я бы действительно посоветовал C # с ASP.NET MVC 2 , очень хорошо работает для приложений CRUD.

5
ответ дан 23 November 2019 в 05:56
поделиться

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

ОО - не самый быстрый способ выполнения кода, но он помогает в создании кода. Умный код всегда быстрее глупого кода и бесполезных циклов. Я администратор базы данных и вижу много этих бесполезных циклов, отбрасываю их, использую лучший код и запросы, и приложение работает быстрее, намного быстрее. Тебя волнует последняя микросекунда? У вас могут быть языки, оптимизированные для скорости, другие просто выполняют свою работу и могут поддерживаться разными программистами.

Это просто выбор.

2
ответ дан 23 November 2019 в 05:56
поделиться

Код пишется медленно. Чтение кода происходит медленно. Поиск и исправление ошибок происходит медленно. Добавление функций и улучшений происходит медленно. Все, что улучшает предыдущее, является победой. Очень редко возникает проблема с производительностью выполнения.

34
ответ дан 23 November 2019 в 05:56
поделиться

Ответ прост: люди говорят, что Ruby медленный, потому что он медленный, основываясь на измеренных сравнениях с другими языками. Однако имейте в виду, что «медленный» - понятие относительное. Часто Ruby и другие «медленные» языки оказываются достаточно быстрыми.

15
ответ дан 23 November 2019 в 05:56
поделиться

Вот что говорит создатель Rails, Дэвид Хайнемайер Ханссон:

Rails [Ruby] для подавляющего большинства веб-приложений достаточно быстрым. Мы есть сайты с миллионами динамических просмотров страниц в день. Если вы окажетесь окажетесь на первой странице Yahoo или Amazon страницу, то маловероятно, что готовый фреймворк на любом языке принесет вам много пользы. Вам скорее всего, придется создавать свой собственный. Но конечно, я бы тоже хотел свободных циклов процессора. I просто мне гораздо важнее бесплатные циклы разработчика, и я готов обменять первое на второе.

Т.е. бросить больше оборудования или машин на решение проблемы дешевле, чем нанимать больше разработчиков и использовать более быстрый, но более сложный в поддержке язык. В конце концов, мало кто пишет веб-приложения на C.

Ruby 1.9 - это значительное улучшение по сравнению с 1.8. Самые большие проблемы Ruby 1.8 - это его интерпретируемая природа (нет байткода, нет компиляции) и то, что вызовы методов, одна из самых распространенных операций в Ruby, особенно медленны.

Не помогает и то, что в Ruby почти все является поиском метода - сложение двух чисел, индексация массива. Там, где другие языки используют хаки (метод Python __add__, Perl's overload.pm), Ruby во всех случаях делает чистый OO, и это может повредить производительности, если компилятор/интерпретатор недостаточно умен.

Если бы я писал популярное веб-приложение на Ruby, я бы сосредоточился на кэшировании. Кэширование страницы сводит время обработки этой страницы к нулю, какой бы язык вы ни использовали. Для веб-приложений накладные расходы на базу данных и другие операции ввода-вывода начинают иметь гораздо большее значение, чем скорость языка, поэтому я бы сосредоточился на их оптимизации.

60
ответ дан 23 November 2019 в 05:56
поделиться

Ruby медленнее C++ в ряде легко измеримых задач (например, при выполнении кода, сильно зависящего от плавающей точки). Это не очень удивительно, но достаточное основание для некоторых людей, чтобы сказать, что "Ruby медленный" без оговорок. Они не учитывают тот факт, что писать код на Ruby намного проще и безопаснее, чем на C++.

Лучшее решение - использовать в коде Ruby целевые модули, написанные на другом языке (например, C, C++, Fortran). Они могут выполнять тяжелую работу, а ваши скрипты могут сосредоточиться на вопросах координации более высокого уровня.

1
ответ дан 23 November 2019 в 05:56
поделиться

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

Ruby 2.1 по сравнению с Javascript V8

Ruby 2.1 по сравнению с обычным Lua

Ruby 2.1 по сравнению с Python 3

0
ответ дан 23 November 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: