LabVIEWForum.de
Laufzeitoptimierung - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Laufzeitoptimierung (/Thread-Laufzeitoptimierung)



Laufzeitoptimierung - Philipp_O - 15.08.2022 09:50

Hallo zusammen,
mein Programm läuft soweit ganz gut, ich würde es nur gern etwas schneller machen, weil es aktuell eine Laufzeit von ca 135 Sekunden hat.

Zunächst zu meinem Programm: In einer XML mit über 180.000 Zeilen stehen Kennnummern in unterschiedlichen Kennnummernlisten. Eine Kennnummer steht in mehreren Listen. Das Programm sucht alle Listen raus, in denen die gesuchte Kennnummer enthalten ist. Zunächst suche ich nach allen "Knr" Elementen. Anschließen vergleiche ich die gefundenen Elemente mit der gesuchten Nummer. Bei einem Treffer gehe ich zwei ebenen nach oben und schreibe die Listen ID raus.

Ich freue mich über jeden Ratschlag
Gruß Philipp


RE: Laufzeitoptimierung - GerdW - 15.08.2022 11:57

Hallo Philipp,

Zitat:Ich freue mich über jeden Ratschlag
Wandle die XML-Datei einmalig in ein anderes Format um (d.h. parsen und umsortieren), dass du dann schneller einlesen kannst!
An der Geschwindigkeit der XML-Funktionen wirst du nicht viel ändern können…

P.S.: Attribut schreibt man ohne "e" Big Grin


RE: Laufzeitoptimierung - ewiebe - 15.08.2022 12:37

Hallo Philipp,

vielleicht ist dieser Artikel aus der C# Welt auch interessant für dich:
https://docs.microsoft.com/en-us/dotnet/standard/linq/perform-streaming-transform-large-xml-documents

Ich kann mir vorstellen, dass, wenn man das XML Dokument in C# in einen MemoryStream lädt und LINQ / lambda expressions (=>) darauf anwendet, dann müsste das innerhalb von Sekunden oder Millisekunden durchgeforstet werden können. Am besten wäre es, wenn du einen Kollegen hast, der C# und diese Thematiken beherrscht. Vielleicht kann er das in C# implementieren und du rufst es dann von LabView aus auf ;-)

Gruß
Eugen


RE: Laufzeitoptimierung - TpunktN - 15.08.2022 12:39

Hallo Philipp,

die NI XML Verarbeitung ist extrem langsam, so war meine Erfahrung damit und ich habe mir den Parser halbwegs selbst geschrieben.
Mit NI XML waren es ein paar Sekunden und selbst programmiert dann noch 100ms oder so.

MfG Timo

Edit: Hab mal den Anfang von meinem als Snippet angehängt. "Multi" ist die erste Verarbeitung


RE: Laufzeitoptimierung - Philipp_O - 15.08.2022 13:37

Vielen Dank für eure Hilfe.

Ich werde die Tage probieren eure Ideen um zu setzen, mal schauen was für meinen Fall dann am besten um zu setzen ist.

Gruß Philipp


RE: Laufzeitoptimierung - Philipp_O - 16.08.2022 12:34

Ihr habt recht gehabt. Die XML Bausteine sind extrem langsam. Ich habe jetzt die XML einmalig in einen String gewandelt und dann mit selber gebauten Bausteinen, ähnlich wie von Timo, ausgelesen. Das Sub VI ist von 135 Sekunden auf 200ms runter und das ganze VI habe ich von über 3 Minuten auf weniger als 500ms bekommen.

Nochmal vielen dank Smile