www.rolandk.de
- Aktuelle Themen zu .Net -
Achtung: Hier handelt es sich um meine alte Seite.
Die aktuelle ist unter folgendem Link erreichbar: www.rolandk.de/wp/
Home Blog Workflow 4 Performance




















































Workflow 4 Performance
Samstag, den 14. Januar 2012 um 14:28 Uhr

Neulich bin ich bei einem Blog-Eintrag über die Performance von Workflow Foundation 4 über ein interessantes Benutzer-Kommentar gestoßen. Dort hat jemand in den Raum geworfen, dass er Workflows dazu verwendet hat, in einem GridView die Darstellung jeder Zelle anzupassen. Vorteil: Da der Algorithmus dahinter über einen Workflow definiert ist, kann dieser sogar durch den Benutzer vergleichbar wie einfache Scripte angepasst werden. Ich persönlich konnte mir dabei nur schwer vorstellen, dass so etwas performant läuft..

 

Daraufhin hat mich die Neugierde gepackt und ich wollte einmal ausprobieren, wie sich die WF4 bei einem solchen Szenario verhält. Vor allem die Geschwindigkeit sollte ja hier ein Problem werden, da Workflows eigentlich für langläufige Aufgaben oder Prozesse ausgelegt ist. Mein Testprogramm ist relativ einfach geworden. Ein normales Fenster mit Windows.Forms, ein GridView darauf, per Datenbindung mit eine Liste an dynamisch generierten Daten gebunden, fertig. Anschließend habe ich einen kleinen Workflow eingebaut, der einfach nur die Hintergrundfarbe einer Zelle abhängig von den Daten bestimmt. Dabei wird dieser Workflow vor jedem Zeichnen von jeder Zelle separat aufgerufen. Eigentlich schon ein etwas krasses Szenario für Workflows, aber eines, an dem man schnell sieht, wie schnell Workflows wirklich sind.

 

Im Folgenden der Workflow. Er besteht aus eine Switch-Activity und kann damit für jede Spalte eine eigens dafür definierte Logik ausführen. Ein gutes Beispiel hier die die Spalte "Sum". Hier wird die Hintergrundfarbe auf Rot gesetzt, sobald der Betrag kleiner 0 ist. Ist der Betrag >= 0, so wird die Zelle auf Grün gesetzt. Das Ändern der Farbe wird über eine eigene Activity, der ChangeCellStyleActivity durchgeführt.

 

 

Das Ergebnis ist recht überraschend. Die Oberfläche läuft entgegen meinen Erwartungen flüssig, oder sagen wir, so flüssig, dass es flüssiger mit dem GridView von Windows.Forms nicht geht. Am unteren Bildschirmrand gebe ich die Anzahl der Aufrufe des Workflows, die Gesamtdauer und die durchschnittliche Dauer aus. Nach diesem Beispiel benötigt der Workflow bei mir im Schnitt 0,04 ms! Das ist auf jeden Fall deutlich mehr, als ich erwartet habe. Nachfolgend ein Screenshot meines Testprogramms.

 

 

Was bedeutet das am Ende? Auf jeden Fall überraschend, dass Workflows auch für ein solches Einsatzszenario doch relativ schnell sind. Die Frage bleibt für mich aber, ob sie dafür wirklich das Richtige sind. Schließlich sind solche Logiken doch viel schneller per Code oder mithilfe von einfachen Scripten definiert. Zumindest würde ich Workflows in meinen Programmen nicht unbedingt für solche Sachen vorsehen. Ein interessanter Versuch war es aber auf alle Fälle.

 

Kommentar hinzufügen

Ihr Name:
Kommentar: