Major
Nice to have
Detail
Detail
#25511
TL-Script: Constant folding for custom script functions
Bei der TL-Script-Übersetzung wird eine "Constant-Folding" Optimierung durchgeführt. Dabei werden Operationen auf konstanten Argumenten direkt während der Übersetzung des Scripts ausgeführt, anstatt die Operation jedesmal bei der Ausführung des Scriptes zu berechnen.
Z.B. ist dadurch if(true, "a", "b") identisch zu "a". Die Abfrage wird direkt durch den Script-Compiler ausgewertet.
Verbesserung
Selbstdefinierte Script-Funktionen (Ableitungen von tl:GenericMethod) sollen auch in diese Optimierung einbezogen werden. Wenn alle Argumente der Funktion konstant sind und die Funktion ohne Kontext und seiteneffektfrei ausgeführt werden kann, dann soll die Funktion direkt durch den Script-Compiler statt zur Ausführungszeit des Skripts ausgeführt werden.
Damit erreicht man z.B. eine große Ersparnis bei Ausdrücken, die regex("...") verwenden, da hiermit das Pattern direkt bei der Script-Übersetzung erzeugt (Pattern.compile(...)) wird.
Anwendung
Eine nutzerdefinierte Script-Funktion muss von tl:SimpleGenericMethod ableiten, um am Constant-Folding teilnehmen zu könenn.
Achtung: Die Funktion muss seiteneffektfrei sein!
Test
- test.com.top_logic.model.search.expr.TestSearchExpression.testConstantFolding()