Почему ruby ​​1.9 быстрее, чем python 2.7 и 3.2?

Я прочитал эту связку ссылок: http://pack.li/L

ruby ​​1.9, кажется, в 2 раза быстрее, чем 1,8... и быстрее, чем python 2.7 и 3.2

Я сделал несколько тестов, это не только рекурсия (я знал, что python был плох об этом), добавьте также и более стандартный материал.

Итак, вот мой вопрос: как это сделала рубиновая команда? 2x улучшение? Включают ли они компилятор/оптимизатор JIT или что-то еще?

Ответ 1

Я рубист, и я думаю, что вы не читали эти (довольно старые) статьи полностью. Оба признались, что использовали... "сенсационные" заголовки. И что алгоритмы, которые они используют, не являются оптимальными. Поэтому у них мало значения в моих глазах.

"Лучшее" место, которое я знаю для сравнения языков, http://benchmarksgame.alioth.debian.org/. Я цитирую "лучшее", потому что, как говорят другие, скорость промежуточного языка, основанная на куче конкретных реализаций, не имеет статистической строгости.

Тем не менее, если вы нанесете ruby ​​1.9 на Python 3, вы получите эти результаты

Результаты: из 10 использованных тестов ruby ​​1.9 быстрее, чем Python в 2 тестах. Он похож на 4, и он медленнее в остальном (последний пример настолько плох, что я соблазн назвать его ложным)

Итак, согласно этим 10 различным тестам, можно только сделать вывод, что нет, рубин не быстрее, чем Python вообще. (Только в некоторых частных случаях).

Ответ 2

Итак, вы указали на блог, который показывает 2 наивную реализацию алгоритма, который отсасывает себя... Затем автор сравнивает эти две надуманные программы и решает, что вся "среда выполнения" курит (другую среду) ".

Не только те тесты не доказывают ничего (кроме скорости выполнения для этого конкретного теста), но если вы действительно просмотрели реализацию, вы можете найти бит, который более оптимизирован в python, создать собственный тест, который очень часто использует этот бит и "доказать" противоположный результат.

Ответ 3

В дополнение к замечаниям @egarcia и @viraptor, я хотел бы отметить, что эти тесты сравнивают Ruby и CPython, в частности реализацию python, а не язык. Есть намного более быстрые реализации python, такие как PyPy. И есть различные реализации Ruby. Вы не можете сравнивать "производительность языка", а только конкретные реализации.

Для получения дополнительной информации о быстром 2.x python - http://speed.pypy.org/