meikelneit
Level-2
- Beiträge
- 161
- Reaktionspunkte
- 1
-> Hier kostenlos registrieren
Schönen guten Morgen,
Ich habe vor kurzem ein bischen mit dem Ablöschen von Daten zu tun gehabt und daraus entstand die Frage in der Thread überschrift. Ich hatte Arrays bis dato oft mit einer FOR-Schleife abgelöscht, wobei ich über den Schleifen indes die Arrayfelder dann mit leeren Felder gleicher Datenstruktur übeschrieben habe. Dabei ist mir aufgefallen das bei großen Felder (länge>5000) je nach CPU sogar bis zu 1ms für einen einzigen Löschvorgang gebraucht werden.
Da konnte ich mit einem MOVE_Variant schon einiges einsparen, das ging Faktor 18 schneller, bei großen Feldern. Das Verhältniss wird unbedeutend bei kleinen Arrays (länge<100).
Mir an jeder Stelle eine gleichartige Struktur im temp an zu klegen die ich dann drüber bügel finde ich nicht elegant. Ich hätte gerne am ende einen FB der mir das handling abnimmt und die Daten mit denen ich es jetzt zu tuen habe sind von Prozess zu Prozess unterschiedlich lang.
Jetzt wollte ich mal in die runde fragen, ich einen TIA-Funktionsbaustein programmieren, der Datenstrukturen unbekannter Länge in einem optimierten Datenbaustein ablöscht, insbesondere solche, die UDTs und Arrays oder Arrays von UDTs enthalten, wobei die Arrays oft mehr als 1000 Felder haben? Und wie kann ich sicherstellen, dass das Ablöschen mehrfach pro Zyklus erfolgen kann, ohne die Zykluszeit zu sprengen?
Ich kenne bis jetzt nur den weg, mir irgendwo ein Array of Byte (10000) hinzulegen, und da rein zu Serialisieren, nur um heraus zu finden wieviele Bytes er dann beschrieben hat. Haltet ihr das für gangbar oder kennt ihr etwas elganteres?
Einen schönen guten Morgen und freundlichen Gruß
Meikelneit
Ich habe vor kurzem ein bischen mit dem Ablöschen von Daten zu tun gehabt und daraus entstand die Frage in der Thread überschrift. Ich hatte Arrays bis dato oft mit einer FOR-Schleife abgelöscht, wobei ich über den Schleifen indes die Arrayfelder dann mit leeren Felder gleicher Datenstruktur übeschrieben habe. Dabei ist mir aufgefallen das bei großen Felder (länge>5000) je nach CPU sogar bis zu 1ms für einen einzigen Löschvorgang gebraucht werden.
Da konnte ich mit einem MOVE_Variant schon einiges einsparen, das ging Faktor 18 schneller, bei großen Feldern. Das Verhältniss wird unbedeutend bei kleinen Arrays (länge<100).
Mir an jeder Stelle eine gleichartige Struktur im temp an zu klegen die ich dann drüber bügel finde ich nicht elegant. Ich hätte gerne am ende einen FB der mir das handling abnimmt und die Daten mit denen ich es jetzt zu tuen habe sind von Prozess zu Prozess unterschiedlich lang.
Jetzt wollte ich mal in die runde fragen, ich einen TIA-Funktionsbaustein programmieren, der Datenstrukturen unbekannter Länge in einem optimierten Datenbaustein ablöscht, insbesondere solche, die UDTs und Arrays oder Arrays von UDTs enthalten, wobei die Arrays oft mehr als 1000 Felder haben? Und wie kann ich sicherstellen, dass das Ablöschen mehrfach pro Zyklus erfolgen kann, ohne die Zykluszeit zu sprengen?
Ich kenne bis jetzt nur den weg, mir irgendwo ein Array of Byte (10000) hinzulegen, und da rein zu Serialisieren, nur um heraus zu finden wieviele Bytes er dann beschrieben hat. Haltet ihr das für gangbar oder kennt ihr etwas elganteres?
Einen schönen guten Morgen und freundlichen Gruß
Meikelneit