Тяжелая альгортмическая работа в Ruby on Rails? - PullRequest
2 голосов
/ 10 февраля 2009

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

Вы можете подумать, что я должен добавить его в рабочую очередь какого-то рода и заставить приложение C ++ обрабатывать его, но мне нужен результат, возвращаемый немедленно. Есть ли способ расширить RoR с помощью плагина C ++ или чего-то еще? Что делать, если я что-то вроде подключения к приложению C ++ через сокет? Или это просто сумасшествие?

Ответы [ 4 ]

9 голосов
/ 10 февраля 2009

[...] Я не думаю [...]

Выполните измерение.

То есть, если писать на Ruby достаточно просто, сначала внедрите его в ruby ​​и измерьте. Затем, если он действительно слишком медленный , выясните, как его обойти.

Даже если вам нужно переписать алгоритм на другом языке, у вас есть алгоритм на ruby, который вам просто нужно скопировать, поэтому он не будет таким же трудоемким, как его написание (скажем) в C ++ в первый раз.

Но сначала измерить.

6 голосов
/ 10 февраля 2009

Другой альтернативой является RubyInline , которая позволяет вам писать код C / C ++ в вашем коде Ruby. Это прекрасно согласуется с предложением Джонаса Кёлькера сначала написать алгоритм на Ruby, а затем найти узкие места. Затем вы можете использовать RubyInline для оптимизации узких мест.

6 голосов
/ 10 февраля 2009

Несколько возможностей.

Сначала посмотрите, сможете ли вы перейти на Ruby 1.9: он значительно быстрее, чем 1.8.

Во-вторых, действительно есть способ написать Ruby-расширения в C .

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

1 голос
/ 10 февраля 2009

Другая возможность (если ваша настройка позволяет) - использовать JRuby. Затем вы можете реализовать алгоритм на Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...