Simulationsgeschwindigkeit von DLL's ?

Antworten
m8nix
Beiträge: 9
Registriert: Samstag 17. Juli 2010, 17:38

Simulationsgeschwindigkeit von DLL's ?

Beitrag von m8nix » Samstag 24. Juli 2010, 23:43

Hallo,

eigentlich hatte ich vor, mir einige Funktionen die ich in PL vermisse, als DLL zu erstellen.
Dazu hab ich etwas mit der DEV-C++ Entwicklungsumgebung experimentiert und mir erhofft, das die erstellten DLL's flott ausgeführt werden.
Leider musste ich aber feststellen das sie Simulationsgeschwindigkeiten von DLL's nicht sonderlich berauschend ist.
Was sehr auf die Gewschindigkeit eingeht, ist die Anzahl der Eingänge:

DLL-Eingänge: ---- Simulationsgeschwindigkeit:
1 --------------------- 1480 kHz
2 --------------------- 1325 kHz
3 --------------------- 1200 kHz
4 --------------------- 1100 KHz
5 --------------------- 1016 kHz
6 ---------------------- 936 kHz

Dabei wurden in der DLL, mit der obige Geschwindigkeitstabelle erstellt wurde, noch nicht einmal Berechnungen mit den Eingängen angestellt. Die DLL hatte also keine, bzw. eine leere Funktion CCalculate.

Welchen Grund gibt es für die hohe benötigte Rechenleistung?

Mein Fazit aus dem Ganzen:
Eine Funktion als Makro nachzubilden ist, sofern sie sich nachbilden lässt, auf alle Fälle schneller als dafür eine DLL zu erstellen.

Was habt Ihr bisher für Erfahrungen mit der Ausführungsgeschwindigkeit von DLL' gemacht?

Gruß
M8nix

Microprocessor
Beiträge: 79
Registriert: Montag 27. Oktober 2008, 00:03

Re: Simulationsgeschwindigkeit von DLL's ?

Beitrag von Microprocessor » Sonntag 25. Juli 2010, 14:33

Hallo M8nix,

willkommen im Club der DLListen,

kleinere Schaltung, die aus Einzelkomponenenten bestehen, werden immer schneller simuliert
werden als vergleichbare Projekte, bei denen Funktionen in DLLs ausgelagert werden. Der
Overhead für das Handling und Parsing der Variablen zieht die Performance einfach runter.

Die Anzahl der Ports ist nur eines von vielen Kriterien, die bei der Verwendung einer DLL zu
berücksichtigen sind.
Das alleinige Messen des zeitliche Verhaltens einer DLL ist letztendlich ohne Bedeutung. Ihre
Auswirkung läßt sich damit nicht vorhersagen sondern muss immer im Kontext mit der restlichen
Schaltung betrachtet werden. Weitere relevanten Kriterien sind

- die Ladezeit des Projekts,
- die Simulationsberechnung (Vorbereitung der Simulation),
- die Simulationsfrequenz,
- die Taktfrequenz (Clockspeed, mit der die Schaltung noch korrekt simuliert wird) und
- die Zeit für das Beenden von ProfiLab ("Entladen").

Bei zunehmender Schaltungsgröße kann der Einsatz einer DLL jedoch deutliche Performance- und
Komfortgewinne nach sich ziehen.

An einem konkreten (sicherlich extremen Beispiel) möchte ich das deutlich machen
(alle Zeitangaben beziehen sich auf ein Pentium 4-System mit 3GHz):
--------------------------------------------------------------------------------------------------
Die Mikroprozessorschaltung aus einzelnen Bauteilen inkl. RAM/ROM
(viewtopic.php?f=21&t=1513)

Ladezeit 30 Sekunden
SimStart 4 Minuten
SimFrequenz 475Hz
max. Clock ca. 12Hz
Beenden 55 Sekunden
--------------------------------------------------------------------------------------------------
Ein kompletter Micro-Controller aus Mikroprozessor (DLL), RAM/ROM, Hardware-Ports für I/O,
(http://www.abacom-online.de/html/dateie ... 805dll.zip)

Ladezeit < 1 Sekunde
SimStart < 1 Sekunde
SimFrequenz 20 KHz
max. Clock > 1000 Hz (mehr gibt es nicht in ProfiLab, mit höherer, externer Taktung über
Hardware noch nicht getestet)
Beenden < 1 Sekunde
--------------------------------------------------------------------------------------------------

Fazit: Der Einsatz der DLL ist deutlich günstiger.
Testet man die 6805-DLL (86KB, 37 Ein-/Ausgänge, zwar ein anderer Prozessortyp, aber
ansonsten ähnlicher Umfang) alleine. so wird sie mit 330 KHz simuliert, in der kompletten
Schaltung nur mit knapp 20 KHz, was auf den ersten Blick nicht gerade prickelnd aussieht.
Die Schaltung selbst lässt sich aber mit mindesten 1000 Hz takten, sodass sie für langsame
Prozesse (z.B. Heizungsteuerung) durchaus praktisch eingesetzt werden kann. Die Lade- und
Berechnungszeiten sind extrem kurz.

Die Schaltung aus Einzelbauteilen ist bei gleicher Funktion auf Grund seiner maximalen
Clockfrequenz von ca. 12 Hz nur zu Demonstrationszwecken geeignet. Darüberhinaus sind
die Lade und Berechnungszeiten nervtötend langsam, eine zügige Schaltungsentwicklung
ist in dieser Form unmöglich.

Ab welcher Schaltungsgröße die DLL schneller und komfortabler wird. läßt sich auf Grund der
Komplexität von Anwenderdaten (Schaltung und ggfs. DLL), Anwendungsprogramm (ProfiLab),
Betriebssystem und Hardware nicht vorhersagen.

Wer mit dem Gedanken spielt, eine DLL für größere, zeitkritische Projekte einzusetzen, dem bleibt
nichts anderes übrig, die Funktion sowohl konventionell (alles ist aus den Grundfunktionen
machbar) als auch als DLL zu realisieren und zu testen.

Gruß
microprocessor

BKGMX
Beiträge: 132
Registriert: Montag 7. Dezember 2009, 10:37
Wohnort: Berlin

Re: Simulationsgeschwindigkeit von DLL's ?

Beitrag von BKGMX » Montag 23. August 2010, 23:18

Moin M8nix,

ich kann da nur Microprozessor zustimmen, DLLs nur wenn es nicht anders geht.

Gruß BKGMX

Antworten

Zurück zu „DLL-Programmierung“