2009-08-14 3 views
2

Ich brauche mehr Leistung in einem Teil eines Programms, in Ruby codiert. In Python konnte ich die Psyco-Bibliothek verwenden (die den Code kompiliert, oder einen Teil vor der Ausführung), um die Leistung zu verbessern, aber ich weiß nicht, ob es in Ruby so etwas gibt.So etwas wie Psyco-Bibliothek (Python) für Ruby, existiert?

Danke!

+0

Sie meinen Psyco (kein ' h ')? – quark

+0

Oh ja, es tut mir so leid – a0rtega

Antwort

1

earcar rechts ist

Sie Ihren Rubin, eigentlich alle Versionen von Rubin von 1,9, kommt mit dem YARV, das ist viel mehr schneller als die alten Ruby-Interpreter, natürlich 1.9.x aktualisieren konnte, ist dies vorausgesetzt, Sie haben eine vorherige Version installiert.

Wenn Sie mehr Geschwindigkeit brauchen ... könnten Sie Code mit c Ruby Erweiterungen schreiben. Here an example..

Dies wäre viel viel schneller, aber Sie müssen wissen, in c zu programmieren.

+0

Ja, ich dachte, eine Erweiterung in C schreiben, aber es ist nicht, dass ich im Moment in diesem Programm suche;) – a0rtega

1

Ich denke nein, aber Sie können boost performance mit Ruby 1.9.

Sie müssen trotzdem vorsichtig sein, weil a lot of things in the language geändert hat.

+0

Ja, in neuen Versionen von Ruby wird die Leistung sehr verbessert. Danke, ich werde die Änderungen sehen;) – a0rtega

2

Wenn Sie C kennen, können Sie kleine Teile des Codes optimieren, indem Sie einfach mit Rubyinline auf C dotieren. Ich weiß nicht, welche Art von Leistungsverbesserungen Sie erwarten können, aber wenn Sie ein paar c liberys im c Bit des Codes anstelle von ruby ​​aufrufen, sollten Sie anfangen, einige große Beschleunigungen zu sehen

require 'inline'

Klasse MyTest

def factorial(n) 
    f = 1 
    n.downto(2) { |x| f *= x } 
    f 
end 

inline do |builder| 
    builder.c " 
    long factorial_c(int max) { 
    int i=max, result=1; 
    while (i >= 2) { result *= i--; } 
    return result; 
    }" 
end 

Ende

Um loszulegen: sudo gem install RubyInline