DB in SCL übergeben

Zuviel Werbung?
-> Hier kostenlos registrieren
Anders sieht das aus, wenn Du Deinen UDT übergibst. Dann kennt der Compiler die Struktur und Du kannst symbolisch zugreifen. Allerdings bläht sowas den erzeugten Programmcode unheimlich auf, wegen den dann nötigen Adressberechnungen zur Laufzeit.

Wenn man viel mit UDTs als Parameter arbeitet, erzeugt SCL übrigens in fast allen Fällen wesentlich schnelleren und kleineren Code als man in AWL es je hinbekommen würde.

Denn der SCL Compiler lädt unter ggf. nur einmal ein Adressregister mit der Adresse und öffnet den entsprechenden DB. Alle weiteren Zugriffe auf die Strukturvariablen erfolgen dann nur noch über Adressregister und Offset.
Da der AWL Compiler nicht optimiert und man per Hand keinen Einfluss auf die Adressregisterberechnung hat, wird dort bei jedem Zugriff auf eine Strukturvariable der ganze Code für das Öffnen des Datenbausteins und Laden des Adressregisters eingefügt (den man normalerweise aber nicht zu Gesicht bekommt).

Selbst bei kleinen Strukturen als Parameter auf die oft zugegriffen, ist der von AWL erzeugte Code schnell 10 mal so groß wie der vom SCL Compiler!
 
Zurück
Oben