03-15-2007 12:32 PM
06-22-2007 12:37 AM - edited 06-22-2007 12:37 AM
I was following this thread with great interest as I am having similar issues and have to use the 'show buffer allocations' feature every 5 mins to ensure my code runs efficiently.
My question is: Travis, what was the outcome of this and am I safe using 8.2.1 or should I wait for the next version to be released?
Message Edited by Support on 06-22-2007 08:42 AM
08-07-2007 02:52 PM
Hello Ben et. al.,
As promised, I’ll give you an update on this issue. I’m not sure if anyone has had a chance to try this out in 8.5, but this behavior has not changed. The issue was recognized as a performance problem, but unfortunately we decided not to fix it. The reason that this was not fixed is that this problem does not affect data or data integrity, a relatively painless workaround is available, and in LabVIEW 8.5 we have introduced a new structure completely designed to take this guesswork out of managing low level performance considerations (the In Place Element Structure). I know this isn’t an answer people may like to hear, but I am confident that once you start using the new memory management techniques you’ll really love having the ability to explicitly tell LabVIEW how to manage your resources.
Thanks for all those that have been following this thread!
08-07-2007 03:12 PM
08-08-2007 07:29 AM
08-08-2007 08:49 AM
@AnthonV wrote:
Will the in-place construct also allow one to wire large datastructures or arrays into (and the same (but modified) structure out of) sub-vi's without the compiler making a copy at the entrance to the VI?
The compiler should not make a copy if there are no forks in the wire and if it can determine an inplaceness path through the VI. That should work in old version as well.
One of the things Steve Rogers said in his session was that you can use this structure (like you can use a shift register) to force an input and an output of a subVI to use the same buffer, so that should theoretically help if you don't split the wire in the caller and if you don't have too complicated nesting of structures in your subVI.
08-10-2007 02:04 PM - edited 08-10-2007 02:04 PM
Yeah, it looks like the help says it is the optimal solution, but in practice it looks like to be optimal in all cases, you’ll need to wire through all the other items in the cluster…. Also, I know that sometimes connecting controls/indicators to the pane can have an impact on whether or not our algorithm can optimize memory. I filed a CAR (ID 4C9CTF3A) to change those things in our documentation.
Message Edited by Travis M. on 08-10-2007 02:04 PM
08-10-2007 02:32 PM
08-13-2007 04:05 PM
Hello Ben,
Agreed – the example using a shift register would be better because it wouldn’t have a copy for the UI. Although, an extra copy for the UI is only necessary if the controls are visible which is the topic of another topic in this article. I think for the purposes of illustration of the “magic pattern” the screenshot does a good job except for the important point made earlier in this post. It’s not always so magic, and in the example created and CARed for this forum, the magic pattern required the “through wiring” of all the nodes in the cluster. Because this is kind of a quirk in our algorithm it is not in the documentation (but I have requested that it be changed).
Hope that helps clarify-
08-13-2007 04:13 PM
Kudos to you Travis for putting up with me!
Here have some stars.
Ben