07.01.2011, 11:00
Hallo zusammen,
ich hoffe ich habe das richtige Forum für diese Frage erwischt.
Ich habe ein Performanceproblem und bräuchte dazu ein paar Tipps. Ich bin kein richtiger LabVIEW Neuling mehr, aber über "Optimales" Programmieren musste ich mir bis jetzt nicht so viele Gedanken machen....
Die Aufgabe:
ich habe ein array mit 6553600 Werten (16 bit numeric) die aus einer Queue ausgelesen werden (zuvor wurden sie mit einer A/D Karte aufgenommen und Bufferweise in die Queue gesteckt, aber ich denke das ist nebensächlich)
nun soll auf das Signal getriggert werden und danach "sortiert" um das neue array dann wieder in eine Queue zu stecken (zur Weiterverarbeitung).
Bisher habe ich das mit einer while-schleife und mit der "built array" Funktion gelöst. Also while-Schleife mit shift registern. Habe dazu ein Bild angehängt (aufs wesentliche beschränkt).
Nachdem ich jetzt das Problem habe, das mein Programm insgesamt zu langsam ist (Queue läuft irgendwann voll...) habe ich versucht mich schlau zu machen wo ich optimieren kann und bin zu dem Schluss gekommen, das hier vielleicht die richtige Stelle ist
Ich habe gelesen das die "built array" Funktion nicht optimal ist weil der Speicher bei jedem durchlauf neu zugeordnet werden muss. Deswegen habe ich versucht das ganze mit "replace array subset" zu lösen. Das erscheint mir jetzt aber noch weniger schnell zu sein (vielleicht hab ich das einfach schlecht gelöst... hab auch dazu ein Bild angehängt).
Habe ich das einfach ungeschickt gemacht, oder ist in dem Fall die "built array" funktion doch die bessere? Oder gibt es noch irgendeine andere Möglichkeit, auf die ich noch nicht gekommen bin? Bin für jeden Tipp dankbar!
nur Vollständigkeitshalber: Ich verwende LabVIEW 2009
Grüße,
Christian
ich hoffe ich habe das richtige Forum für diese Frage erwischt.
Ich habe ein Performanceproblem und bräuchte dazu ein paar Tipps. Ich bin kein richtiger LabVIEW Neuling mehr, aber über "Optimales" Programmieren musste ich mir bis jetzt nicht so viele Gedanken machen....
Die Aufgabe:
ich habe ein array mit 6553600 Werten (16 bit numeric) die aus einer Queue ausgelesen werden (zuvor wurden sie mit einer A/D Karte aufgenommen und Bufferweise in die Queue gesteckt, aber ich denke das ist nebensächlich)
nun soll auf das Signal getriggert werden und danach "sortiert" um das neue array dann wieder in eine Queue zu stecken (zur Weiterverarbeitung).
Bisher habe ich das mit einer while-schleife und mit der "built array" Funktion gelöst. Also while-Schleife mit shift registern. Habe dazu ein Bild angehängt (aufs wesentliche beschränkt).
Nachdem ich jetzt das Problem habe, das mein Programm insgesamt zu langsam ist (Queue läuft irgendwann voll...) habe ich versucht mich schlau zu machen wo ich optimieren kann und bin zu dem Schluss gekommen, das hier vielleicht die richtige Stelle ist
Ich habe gelesen das die "built array" Funktion nicht optimal ist weil der Speicher bei jedem durchlauf neu zugeordnet werden muss. Deswegen habe ich versucht das ganze mit "replace array subset" zu lösen. Das erscheint mir jetzt aber noch weniger schnell zu sein (vielleicht hab ich das einfach schlecht gelöst... hab auch dazu ein Bild angehängt).
Habe ich das einfach ungeschickt gemacht, oder ist in dem Fall die "built array" funktion doch die bessere? Oder gibt es noch irgendeine andere Möglichkeit, auf die ich noch nicht gekommen bin? Bin für jeden Tipp dankbar!
nur Vollständigkeitshalber: Ich verwende LabVIEW 2009
Grüße,
Christian