Um eine globale Sicht auf den zu optimierenden Kode zu ermöglichen, besitzt Tycoon die reflektive Eigenschaft, einmal übersetzten und im Store abgelegten Kode in die Zwischenrepräsentation TML (wo der Optimierer arbeitet) zurück zu transformieren. Dazu wird jedoch nicht der ausführbare Byte-Kode, sondern der s.g. PTML-Kode verwendet, der eine persistente Abbildung vom TML-Kode darstellt. Um Platz zu sparen wird PTML-Kode optional bei der Kode-Generierung erzeugt (die Umgebungsvariable generatePTML ist auf false gesetzt).
Folgende Regeln ergeben sich daraus:
do set generatePTML truecompiliert wurden. Wenn das bei manchen Objekten nicht der Fall ist, bekommt der Optimierer keine Information, also tastet er solche Objekte nicht an. Das Ergebnis ist eine "partielle" Optimierung nur dieser Objekte, die PTML-Kode haben.
reflect.optimize(Sinnvolle Objekte sind Funktionen, aber auch Tupel oder ganze Module. In beiden Fällen werden alle erreichbaren Objekte in der Tiefe transitiv optimiert. Ein wiederholter Aufruf von reflect.optimize erzeugt keinen besseren Kode, vielmehr sollte dazu an den Umgebungsvariablen expandTuningPos, expandTuningPos und expandTuningNeg gedreht werden. Die Voreinstellung sollte jedoch gute Resultate liefern.)
let opt = reflect.optimize(f)hat keinen Sinn, da das alte Objekt f mit der optimierten Version überschrieben wird. Also sind f und opt gleich:
f == opt => true
reflect.optimizeXFile(kann man das x-File eines ausführbaren Moduls (mit Interface Main) dynamisch optimieren. Das Ergebnis ist das selbe File mit optimiertem und kleinerem Kode. Die Voraussetzung ist auch hier, daß das jeweilige Modul mit PTML-Kode-Generierng erzeugt wurde.)