11.07.2015 Aufrufe

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

5.4 ENTWURF OPTIMIERTER <strong>ODL</strong>-ABFRAGEN 91Es spricht gr<strong>und</strong>sätzlich nichts dagegen, die Verwendung des vollen <strong>ODL</strong>-Sprachumfangs inbenamten Prädikaten zu erlauben. Hierbei muss allerdings darauf geachtet werden, dass benamtePrädikate zurzeit in Restriktionstermen eingeschränkter Typen aufgerufen werden dürfen,in denen ebenfalls nur <strong>Sprachkonstrukte</strong> aus der CCL-Teilmenge zugelassen sind. Sollte alsoder Sprachumfang bei benamten Prädikaten erweitert werden, so muss kontrolliert werden, dassin Restriktionstermen eingeschränkter Typen nur solche benamten Prädikate aufgerufen werdendürfen, die lediglich die CCL-Teilmenge von <strong>ODL</strong> verwenden.5.4 Entwurf optimierter <strong>ODL</strong>-AbfragenIn diesem Abschnitt wollen wir einige Faustregeln zum Entwurf optimierter <strong>ODL</strong>-Abfragen vorstellen.Die Optimierungsregeln berücksichtigen die technische Implementierung des <strong>ODL</strong>-Auswertungssystems<strong>und</strong> können die Auswertungszeiten für <strong>ODL</strong>-Abfragen zum Teil um eine bis mehrere Größenordnungenverkürzen. Um dem Leser die Optimierungseffekte zu veranschaulichen, werden für einigeBeispielabfragen die Auswertungszeiten für eine nicht-optimierte <strong>und</strong> eine optimierte Formulierungangeben – als Testsystem wurde dabei der Rechner verwendet, auf dem diese Diplomarbeit geschriebenwurde, <strong>und</strong> als Produktmodell wurde ”FM99Fin.qml” aus dem Projekt ”FM99” verwendet, dassich im Verzeichnis ”Examples\FM99” einer QUEST-Entwicklerinstallation befindet.• Verwendung von Produkttypen statt QuantorlistenWird eine Universal- oder Existenzquantifizierung über mehrere Variablen benutzt, so solltendie Variablen in einem Produkttyp zusammengefasst werden. Die Abfrageforall ch:Channel. exists p1:Port. exists p2:Port.(is SourcePort( ch, p1 ) andis DestinationPort( ch, p2 ) )kann damit zu einer äquivalenten aber effizienteren Abfrageforall ch:Channel. exists ports:( p1:Port, p2:Port ).(is SourcePort( ch, ports.p1 ) andis DestinationPort( ch, ports.p2 ) )umformuliert werden. Auf dem Testsystem sank die Auswertungszeit um den Faktor 2. Einnoch drastischeres Beispiel liefert die Abfrageexists c1:Component. exists c2:Component.exists c3:Component. exists c4:Component.exists c5:Component.(c1 = c2 and c2 = c3 and c3 = c4 and c4 = c5 )deren optimierte Formexists comps:( c1:Component, c2:Component,c3:Component, c4:Component, c5:Component ).(comps.c1 = comps.c2 and comps.c2 = comps.c3 andcomps.c3 = comps.c4 and comps.c4 = comps.c5)lautet. Die Auswertungszeit sinkt hierbei von 120 auf 5 Sek<strong>und</strong>en, also um den Faktor 24.Dieser Effekt rührt daher, dass Produkttypen zur wiederholten Iteration über die Typinstanzender Elementtypen, die zur Erzeugung der Produkttupel notwendig ist, einen cachenden Iteratorbenutzen (s. auch Abschnitt 5.1.2). Der Abruf von Werten aus dem Cache ist meistens erheblichschneller als die Verwendung des Originaliterators eines Metamodelltyps, wodurch sich derGeschwindigkeitsgewinn ergibt.Bei dieser Optimierung muss noch darauf hingewiesen werden, dass das Einbringen der Va-

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!