![]() |
parallele Tasks - Performance - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: parallele Tasks - Performance (/Thread-parallele-Tasks-Performance) Seiten: 1 2 |
RE: parallele Tasks - Performance - dimitri84 - 10.10.2011 07:03 Vielen Dank für den Ansatz! RE: parallele Tasks - Performance - dimitri84 - 10.10.2011 07:22 Edit (Anhang oben, einfach klasse diese 10-minütige Editzeit): Bei DAQ die Blockgröße zu verdoppelt, damit kann ich gut leben. Aber die CAN Read-Funktion liest nur Message-weise (Anhang 1) Und, wenn nix zu tun ist, lese ich immer weiter damit die Receive Queue nicht zu voll wird (Anhang 2) (Mir würde auch eine "empty Queue" Funktion besser gefallen, die einfach den gesamten Inhalt verwirft - das bietet der Treiber aber nicht, soweit ich das sehe...) Ist das richtig so? (Hab vorher noch nie was mit CAN gemacht.) RE: parallele Tasks - Performance - schrotti - 10.10.2011 19:25 Du kannst der CAN-Karte auch sagen, dass er Zeit x warten soll, bis n Msg (ReadMult Size for Notification) im Puffer liegen. Nach Ablauf der Zeit x gibt ncWaitForState, sofern n Nachrichten nicht eingetroffen sind, einen Fehler aus, der leicht ausgewertet werden kann. Der Puffer lässt sich nur durch ein Reset der Karte leeren (ncAction). Optimizing Speed For CAN I/O RE: parallele Tasks - Performance - dimitri84 - 11.10.2011 07:01 Redest du dabei von CAN Karten/Treiber von NI? Ich hab nur eine viel billigere zur Verfügung. Muss mir da nochmal die ganzen Treiber VIs im Detail anschauen... Vielen Dank für den Link. RE: parallele Tasks - Performance - gottfried - 11.10.2011 10:06 Hallo, > Also Merke: Keine Melder innerhalb von Schleifen anfordern!!! das ist Interessant - wenn Du Bildreferenzen mit dem selben Namen in einer Schleife erzeugst hat das keinerlei Einflüssen (auch nicht nach 10^9 Durchläufen). Wieso plötzlich bei Meldern? Vielleicht wenn man einen Namen vergibt und bei dem bleibt - wie mein Beispiel mit den Bildern - kann man das (unschöne) Programmteil laufen lassen? Würde mich interessieren Gottfried RE: parallele Tasks - Performance - schrotti - 11.10.2011 18:52 Du erzeugst eine Referenz auf einen Melder oder eine Queue. Wenn der Melder/Queue noch nicht exestieren, werden sie gewöhnlich beim ersten Aufruf ebenfalls erzeugt. Die Referenzen können auch einzeln geschlossen oder der Melder/Queue werden gleich eliminiert, wobei alle darauf verweisenden Referenzen entfernt werden. Bei deinen Bildern, ich denke du redest hier vom Vision-Toolkit, wird anscheinend immer die gleiche Referenz hervorgekramt. Leicht ersichtlich wird dies, wenn man zwei Melder/Queue- Referenzen auf die gleiche Queue erzeugt und miteinander auf Gleichheit prüft. Der Vergleich fällt negativ aus. Mittels einer Sonder oder Umwandlung in Variant wird der der Unterschied ebenfalls sichtbar. RE: parallele Tasks - Performance - dimitri84 - 19.10.2011 19:44 Ganz vergessen! Schrottis Tipp mit den Interrups war die Lösung. Hab die Read-Häufigkeit von DAQ und CAN reduziert - läuft jetzt spitze! |