Warum ist der SCL Kompiler so scheiß laaangsam

ML1982

Level-2
Beiträge
138
Reaktionspunkte
18
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum ist der Siemens SCL Kompiler eigentlich so super laaaangsam. Und das bei einer CPU Auslastung von 3-4%.
Damit es keine Missverständnisse gibt, ich meine das mir das übersetzen der Quelle zu lange dauert.
Die Laufzeit auf der S7 CPU meine ich nicht.

Mein Eindruck ist, daas der Kompiler ziemlich viel auf der Festplatte operiert?
Wie kann ich herausfinden wo er dies macht? Um dies dann eventuell mit einer RamDisk zu beschleunigen.

Oder kennt jemand andere Tricks?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke mal der ist so langsam weil er beim Erstellen der Compiler-internen Symboltabelle für die Variablen die ganzen Projekt-Datenbanken durchackern muss. Und das teilt sich bei einem S7-Programm schon auf ein paar Dateien auf.

Aus einem CFC-Programm wird ja auch eine mehr oder weniger große SCL-Datei erzeugt die daraufhin übersetzt wird. Dass das jetzt sooo lange dauert ist mir noch nicht aufgefallen.
Welchen Zeitrahmen verstehst du denn unter langsam, und von wie vielen Zeilen Quellcode sprichst du da?
 
und was hat da die CPU Auslastung damit zu tun?
Hä? Ich verstehe die Frage nicht?
Die CPU Kompiliert doch den Code, in meinem Falle ein Core i7.

Das Projekt in eine RamDisk zu legen bringt nichts, dass habe ich schon ausprobiert.

390kByte Code brauchen bei mir 3min1sec.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
16 Quellen die mit einem Make File compiliert werden.

Bei C/C++ Compileren wie Microsoft Visual Studio oder gcc unter Linux geht ja jeder CPU Kern, der für das Compilieren verwendet in Volllast.
Warum macht der SCL Compiler das nicht? Schickt Siemens den entsprechenden Thread immer mal wieder schlafen? Damit man Kaffee trinken kann? ;-)
 
SIMATIC products

Name Version Release Release number

S7 Distributed Safety Programming V5.4 + SP5 K5.4.5.0_3.5.0.2 K5.4.5.0
SIMATIC WinCC flexible Runtime 2008 SP2 Upd1 K01.03.02.01_01.03.00.03 K1.3.2.1
Automation License Manager V5.0 + SP1 K05.00.01.00_01.03.00.17 K5.0.1.0
S7-PLCSIM V5.4 + SP4 K05.04.04.00_01.13.00.01 K5.4.4.0
SIMATIC ProSave V7.4 incl. SP6 K7.4.6.0_1.14.0.1 K7.4.6.0
Primary Setup Tool V4.0 V04.00.00.00_18.01.00.01 V04.00.00.00
S7 F ConfigurationPack V5.5 + SP6 K5.5.6.0_9.1.0.1 K5.5.6.0
S7-SCL V5.3 + SP5 K05.03.05.00_01.04.00.01 K5.3.5.0
STEP 7 V5.4 + SP5 K5.4.5.0_12.6.0.1 K5.4.5.0
SIMATIC WinCC flexible 2008 SP2 Upd1 K01.03.02.01_01.03.00.03 K1.3.2.1
 
hau ne SSD rein und der Compiler geht ab.....

Oder die gute alte Ramdisk :ROFLMAO:

Macht eine SSD wirklich so einen Unterschied? Kenne keinen der so eine im Einsatz hat.

Ich habe eben mal die komplette Oscat-Lib neu übersetzt, da rödelt er auch schon ein paar Minuten dran herum. Aber was bringts sich darüber aufzuregen, Siemens wird daran eh nichts ändern. Man müsste schon seinen eigenen Compiler schreiben...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Oder die gute alte Ramdisk :ROFLMAO:

Macht eine SSD wirklich so einen Unterschied? Kenne keinen der so eine im Einsatz hat.

Ich habe eben mal die komplette Oscat-Lib neu übersetzt, da rödelt er auch schon ein paar Minuten dran herum. Aber was bringts sich darüber aufzuregen, Siemens wird daran eh nichts ändern. Man müsste schon seinen eigenen Compiler schreiben...

Das war hier im Forum doch vor Jahren schon mal im Plan...
 
Also wie gesagt, dass mit RamDisk habe ich teilweise schon probiert.
Ich habe das Projekt in eine RamDisk gespeichert.
Die Festplattenzugriffe werden deutlich weniger. Spürbar schneller wird es aber nicht.
 
Virenscanner ???

Ist vielleicht ein Virenscanner am werkeln? Mein Siemens-Projektverzeichnis habe ich vom Virenscan ausgeschlossen. Lange Wartezeiten beim Übersetzen sind mir nie aufgefallen. Allerdings übersetze ich auch nur einzelne Bausteine.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist vielleicht ein Virenscanner am werkeln? Mein Siemens-Projektverzeichnis habe ich vom Virenscan ausgeschlossen. Lange Wartezeiten beim Übersetzen sind mir nie aufgefallen. Allerdings übersetze ich auch nur einzelne Bausteine.

Kannst ja mal als Benchmark-Test die aktuelle Oscat-Lib 3.11 testen.
In den Quellenordner eine SCL-Übersetzungssteuerdatei einfügen. Aus der Symboltabelle alle Symbole von FBs in diese Steuerdatei einfügen.
Ganz zu Anfang noch ein
{SCL_OverwriteBlocks := 'y'; SetOKFlag := 'y'}
einfügen und dann übersetzen.

Bei mir:
4 Min 20 Sekunden.

Hardware: Core2Duo 6400@2,13 Ghz, Samsung HD103SI 1TB Festplatte, Step7 V5.5 mit Windows 7

Mich wundert nur dass es nichts bringen soll das Projektverzeichnis in eine Ramdisk zu legen. In diesem Ressourcenmonitor den Win7 mitbringt kann man sehen dass der SCL-Compiler die ganze Zeit in Datei einer Datenbanktabelle rumrödelt, CPU-Last liegt bei lauschigen 2%...
 
Hi,

genau so hatte ich es auch getestet, Core2Duo mit E6400 2,13GHz allerdings unter Windows XP.
Ich komme da auch auf ca. 4 Minuten bei einer Prozessorauslastung von ca. 5%.

Gruss Daniel
 
Mich wundert nur dass es nichts bringen soll das Projektverzeichnis in eine Ramdisk zu legen. In diesem Ressourcenmonitor den Win7 mitbringt kann man sehen dass der SCL-Compiler die ganze Zeit in Datei einer Datenbanktabelle rumrödelt, CPU-Last liegt bei lauschigen 2%...

Das ist es ja gerade, was ich auch nicht verstehe.
Nehmen wir mal an ein CPU wäre in Vollast, dann wäre der Kompiler 25mal schneller fertig....

Werde nächstes WE mal die oscat mit und ohne Ramdisk testen. Aber bei meinem anderen Projekt war ich mit Ramdisk auch nicht über 3%CPU Auslastung.

Wie erstelle ich denn schnell die SCL-Übersetzungssteuerdatei, für oscat.
Die Symbole sind ja schon da.
 
Zuletzt bearbeitet:
Zurück
Oben