INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

Code / Laufzeitoptimierung



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

28.09.2020, 12:16 (Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2020 12:17 von tuhpon.)
Beitrag #1

tuhpon Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Jun 2007

13
2015
DE

85354
Deutschland
Code / Laufzeitoptimierung
Hallo zusammen,

Ich habe ein LV-Programm geschrieben, bei welchem die Funktionalität auch vorhanden ist. Jedoch dauert die Ausführung sehr lange.
Darum würde ich die Teilaufgabe hier gerne vorstellen und fragen, wer für mich Tips hätte um den Code demenstpechend anzupassen, dass die Laufzeit verkürzt wird.

Ausgangslage:
Ich bekomme XML-Dateien, in welchen meine Daten in der Hex-Schreibweise als UTF-8 codiert sind. Die XML-Dateien werden dann ca. 4 MB groß sein und somit über 4 mio HEX-Zeichen enthalten.

Das sieht dann als String so aus:
Code:
2EF4C59F 2EF4C5BF 2EF4C5DF 2EF4C5FF 2EF4C61F 2EF4C63F 2EF4C65F

Dieser String soll dann wie folgt Interpretiert werden:
Code:
0010 = 2
1110 = E
1111 = F
0100 = 4
...

Es gehören immer 8 Zeichen zu einem Block zwischen zwei Leerzeichen zusammen. Ist die Zeichenkette kürzer wie 8 Zeichen muss dementsprechen mit führenden 0-len aufgefüllt werden.

Ziel
Das Ziel der Umwandlung ist der Datentyp Waveform mit U8 als Daten. Die Daten bestehen lediglich aus der Folge von 0ern bzw. 1ern (0010111011110100..). Danach erfoglt dann die eigeneliche Verarbeitung der Daten.

Folgender Code von mir erfüllt bereits seine Aufage:

[Bild: attachment.php?aid=61312]


Aktuell fehlt mir jedoch ein Ansatz, um den Code effektiver zu gestalten.
Würde mich freuen, wenn ich den ein oder anderen Tip von euch bekommen könnte.

Vielen Dank

Viele Grüße
Christoph


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.09.2020, 14:05 (Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2020 14:06 von jg.)
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.598
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Code / Laufzeitoptimierung
Wieso wandelst du nicht in eine Digital Waveform?

Eine (max. Achterpaket Buchstaben) kannst du auch so wandeln:
   
Dein Auffüllen kannst du dir damit schenken.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.09.2020, 14:24 (Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2020 14:26 von th13.)
Beitrag #3

th13 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 115
Registriert seit: Oct 2013

2018 SP1
2013
EN


Deutschland
RE: Code / Laufzeitoptimierung
Das geht auch einfacher:
   
Ich habe 2 kürzere Blöcke zum Testen eingefügt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.09.2020, 15:31
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.598
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Code / Laufzeitoptimierung
(28.09.2020 14:24 )th13 schrieb:  Das geht auch einfacher:

Ich habe 2 kürzere Blöcke zum Testen eingefügt.

Top1

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.09.2020, 17:23
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 16.616
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 20)
1995
DE_EN

10×××
Deutschland
RE: Code / Laufzeitoptimierung

Akzeptierte Lösung

@th13:
Das geht noch einfacher:
   
Big Grin

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.09.2020, 10:25
Beitrag #6

th13 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 115
Registriert seit: Oct 2013

2018 SP1
2013
EN


Deutschland
RE: Code / Laufzeitoptimierung
(28.09.2020 17:23 )GerdW schrieb:  @th13:
Das geht noch einfacher:
Sehr schön.

(28.09.2020 12:16 )tuhpon schrieb:  Jedoch dauert die Ausführung sehr lange.
Mit dem Code von Gerd dauert das Einlesen einer 4 MB großen Textdatei (66700 mal den Beispielstring) auf meinem Rechner ca. 740 ms. Deinen Code habe ich nicht nachgebaut und kann daher nicht vergleichen. Daher die Frage: schnell genug?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.09.2020, 11:55 (Dieser Beitrag wurde zuletzt bearbeitet: 29.09.2020 11:56 von tuhpon.)
Beitrag #7

tuhpon Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Jun 2007

13
2015
DE

85354
Deutschland
RE: Code / Laufzeitoptimierung
Hallo Zusammen,

vielen Dank für eure allen Unterstützung.

Die Lösung von GerdW hat bei mir einen Mega Geschwindigkeitsvorteil gebraucht. Smile
Danke an th13 fürs Testen. Smile

Ich werde mir beide Lösungen nochmal anschauen und drüber nachdenken, was den Unterschied zu meinem macht Big Grin

Viele Grüße

Christoph
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.09.2020, 15:39
Beitrag #8

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.598
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Code / Laufzeitoptimierung
(29.09.2020 11:55 )tuhpon schrieb:  Ich werde mir beide Lösungen nochmal anschauen und drüber nachdenken, was den Unterschied zu meinem macht Big Grin

Hauptsächlich wird das die FOR-Loop sein, die den Geschwindigkeits-Vorteil gegenüber deiner Lösung bringt.
LabVIEW kann hier schon vorher die Größe des Ausgangs-Arrays bestimmen und entsprechend Speicher vorab allozieren.
Bei deiner Shift-Register Variante inkl. "Insert-Into-Array" muss LabVIEW immer wieder Speicher allozieren - das kostet Zeit.

Dann sind es insgesamt viel weniger Schleifen-Durchläufe, deine For + While-Loop geht durch jeden Buchstaben des Eingangsstrings, die anderen Vorschläge fassen immer gleich die 8er-Blöcke zu einer U32-Zahl zusammen.

LabVIEW-Funktionen, die auf ein Array angewendet werden, sind in der Regel ebenfalls deutlich schneller als das in Einzelaufrufen nachzuprogrammieren.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: