02-25-2007 10:15 AM - edited 02-25-2007 10:15 AM
HI Shane,
I changed it even more to only allocate buffers before testing and then work from SR's.
You mention of LV 8.2 remended me to try that as well.
I think we have a bug in LV 8.2 (LV 8.2.1 Beta to be technically correct).
IN LV 7.1 all of the versions opperate in-place and it is a toss-up which verson is better. This is consistent with the KB article you quoted earlier.
Now in LV 8.2 method #2 (Cluster wired thru one bundle terminal wired) wants to create new buffers!
This screen shot illustrates.
Method #2 and #3 are identical with the exception of an un-wired input to the bundle function. In previous of versions of LV they are wire equivalent code.
Can I get some consensus on this being a bug ?
If this is not a bug, please help me understand the diffrences.
The LV 7.1 and LV 8.2 versions are attached.
Ben
Message Edited by Ben on 02-25-2007 10:18 AM
02-26-2007 06:43 AM
Adding to the above...
With the exception of the bug, the in-placness algorithm is rather impresive, is it not?
Ben
02-26-2007 07:10 AM
02-26-2007 12:54 PM
I'm sure you meant to say cluttered. 😄
@shoneill wrote:
3) Some forms of clutered array manipulation seem to be buggy ...
02-27-2007 08:23 AM
The bug invloving the Bundle function in LV 8.2 was reported to NI Support unde SR 934633.
I will update this thread if I learn more.
Ben
02-28-2007 12:06 PM
A CAR has been filed for this issue;
"
the title is
"Cluster Array Performance Penalty," and the ID is 46QG7LJG.
"
Ben
03-13-2007 03:43 PM
Hello,
The screenshots on the font panel of your 8.2 attachment - were those taken
from 8.2?
To address these issues as I see them:
A) No buffer allocation should occur at a tunnel (not auto indexed) going into
any structure or coming out of any loop (I could see a case for an
allocation for a tunnel coming out of a case structure since the compiler
doesn't know which case is going to be executed until the program runs).
I think this is what you are pointing out in your picture labeled as "A"
and "B". I don't see these allocations occurring with LabVIEW
8.20
B) Why does the "wiring through" of the array in method 3 alter the
inplaceness of the operation? I do think I can answer this question, and
it is not a bug (though it could probably be improved. I believe that the
algorithm to detect if an operation can occur in place looks for a 'well known
pattern'. A well known pattern is an unbundle, operation, rebundle with
the same wire (such as done in "method 3"), I believe that if you
don't connect all the terminals the pattern is not recognized as something that
can occur in place and therefore a buffer allocation is performed (as in method
2).
Please let me know if you have any comments. Have a great
afternoon-
03-14-2007 03:38 AM
03-14-2007 07:24 AM
Hi Travis,
Please look again.
LV 7.1 handles the bundle efficiently.
LV 8.2 (8.2.1 Beta) does not.
Applications that use that construct and run fine in LV 7.1 will suffer badly if used in LV 8.2.
So please run the benchmarks yourself in both version and please post back.
Thank you,
Ben
03-15-2007 12:11 PM