Ich stolperte auf der Treppe und fand einen Rubin – Nachtrag

Am Rande der Jax 2011 sprach ich mit Brian Goetz (Oracle). Er erklärte mir, dass der Engpass bei der Ausführung dynamischer Sprachen vor allem in der Interpretation von Methoden und Funktionen liegt: Bei einer statisch typisierenden Sprache lautet ein Funktionsaufruf bsp.:

int addiere(int i, int j)

Durch das Schlüsselwort „int“ „weiß“ der Kompiler „Aha, hier kann nur ein Integer kommen“ und erzeugt den entsprechenden Maschinen- oder Bytecode.

Bei einer dynamische typisierenden Sprache sieht derselbe Funktionsaufruf so aus

addiere(i, j)

Nun weiß der Interpreter gar nicht, was er da geliefert bekommt! Vielleicht zwei Integer, vielleicht einen Long und einen String? Und was soll er bloß zurückgeben?! Also erzeugt er für jede Möglichkeit einen eigenen Maschinen- oder Bytecode. Und das dauert so lange.

Es gibt aber Abhilfe: In Java 7, so versprach Brian Goetz, wird es eine bessere Unterstützung für dynamische Sprachen geben. Diese beruht darauf, dass der Interpreter (der auch dann immer noch mitgeliefert werden muß) den Quellcode gründlicher als bisher analysiert und dadurch viele Möglichkeiten ausschließen kann. Dadurch muß weniger Bytecode als bisher erzeugt werden, wodurch dynamische Sprachen schneller ausgeführt werden.

Mirah war (noch?) kein großes Thema auf der Jax 2011, aber einige Leute wussten schon davon.

Veröffentlicht in JRuby, Ruby. Kommentare deaktiviert für Ich stolperte auf der Treppe und fand einen Rubin – Nachtrag
%d Bloggern gefällt das: