Jump to content

Kerry

Members
  • Content Count

    2
  • Joined

  • Last visited

Community Reputation

0

About Kerry

  • Rank
    I've come back for more.

LabVIEW Information

  • Version
    LabVIEW 8.6
  • Since
    2002
  1. Thanks for all the responses! We're slowly working our way through, removing globals sequence structures. The array itself is no longer a global, but there are still some other (much smaller) globals and probably still lots of room for improvement. After many tests, we were still falling short of our target. Until I read Shaun's post. I noticed that in your final example, you're using a shift register for the array, instead of just connecting the array through the loop. I had been connecting it through the loop - making this change made all of the difference for us! So I assume that shift registers avoid copying the data on every cycle, while "normal?" connections don't? Thanks you all for your help, I've learned quite a bit in the past two days :-) -Kerry Edit: Some more searching shows that I was actually breaking many of the best practices when using large data sets: http://zone.ni.com/reference/en-XX/help/371361H-01/lvconcepts/memory_management_for_large_data_sets/
  2. Hello all, We have an application that needs to run (approxomately) at a set frequency. We're having trouble hitting our mark, and we've idenfied the bottleneck as a read from a 2D array, which happens once per cycle. The array size is something like 800000x6, and once each cycle, we extract a row and pass the 6 values along. When we replace the array read with constants, we achieve our 8 msec target. We've tried a few different methods to access the data, but haven't found any noticable improvement. Here's what we've tried: After some searching, we thought an "In Place Structure" might be worth trying: But still no change in execution speed. We also read that global variables are bad for large arrays, so we replaced it with a wire (tested with the second and third methods shown above), but the execution speed actually dropped by a factor of 3. I'm wondering what happens to wires when they pass through loops, case structures and sequences? This is the top level of the application, showing the wired path from "Read Cmnd File" through to "Get Cmnd From Array," which is the sub-VI where the the above screen captures are from. Is there something else we should be doing here? Maybe some higher-level design issue that we've overlooked? Also, when the timed while loop doesn't complete in 8 msec, the execution time jumps to 16 msec. Is this normal? Is there a way to have it run "at 8 msec or as fast as possible?" Thanks in advance, Kerry
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.