2009-02-10 63 views
2

我有一個相當密集的算法,必須在我的RoR應用程序中經常運行(每秒多次)。考慮到slow Ruby is與這樣的東西,我不認爲這會是很好的做Ruby的工作。Ruby on Rails中的重載函數?

您可能會認爲我應該將其添加到某種工作隊列中,並讓C++應用程序處理它,但是我需要立即返回結果。有沒有辦法用C++插件或其他東西來擴展RoR?如果我喜歡通過套接字連接到C++應用程序?或者只是瘋了?

+0

這聽起來有點爭議...... – GEOCHET 2009-02-10 15:57:22

+0

是怎麼回事?紅寶石數字處理速度緩慢甚至不是爭論,這是事實。 – ryeguy 2009-02-10 16:01:38

回答

6

另一種替代方法是RubyInline,它允許您在Ruby代碼中編寫C/C++代碼。這很適合與JonasKölker的suggestion一起在Ruby中編寫算法,然後找到瓶頸。然後你可以使用RubyInline來優化瓶頸。

9

[...]我不認爲[...]

進行測量。

也就是說,如果在Ruby中編寫相當簡單,首先在ruby中實現它並進行測量。那麼,如果真的太慢,請了解如何避開它。

即使你需要用另一種語言重寫算法,你在ruby中有一個算法,你基本上只需要複製,所以它不會像第一次寫入(比如說)C++那樣費時。

但是先量一下。

+0

我明白你在說什麼,但我更多地問,如果我需要,我會如何用其他語言來實現它。 – ryeguy 2009-02-10 16:14:47

6

幾種可能性。

首先,看看您是否可以遷移到Ruby 1.9:它比1.8快很多。第二,確實有辦法寫Ruby extensions in C。第三,你確實可以用任何你覺得方便的語言編寫一個單獨的程序並使用它。最好的方法很難猜測,因爲你沒有真正給出細節,但想想popen是如何工作的。

1

另一種可能性(如果您的設置允許)使用JRuby。然後你可以用Java實現算法。