Showing results for 
Search instead for 
Did you mean: 

Reference Objects in LabVIEW - LabVIEW 8.5 Update

Several attendees requested LabVIEW 8.5 data for the benchmarks I showed at my NI Week presentation - TS1284 - Reference Objects in LabVIEW.  In addition, the severe performance degradation seen in Datasockets going from LabVIEW 7.1 to 8.2 was an artifact of my testing environment.  I have fixed it and now actually see a performance improvement.  I have updated the presentation and zipped it and the test code in the attachment below.  I also tested in LabVIEW 8.5 with the following results, which can be compared to the presentation (same experimental setup).

10,000 DBL read/write cycles
Mode - Time (ms)
Global - 7.6
Single Process Shared Variable - 12.8
Network Shared Variable - 1980
Datasocket - 10700
Configuration VI - 745
Control Reference - 2440
GOOP 1.0 - 2000
LV2 Global - Semaphore - 294
LV2 Global - Action Engine - 13.7
Single Element Queue - 41.4

Read of 1MByte Buffer
Mode - Time (ms)
Global - 0.000300
Single Process Shared Variable - 0.000309
Network Shared Variable - 0.125
Datasocket - 7.05
Configuration VI - 168.0
Control Reference - 0.000726
GOOP 1.0 - 0.00538
LV2 Global - Semaphore - 0.00295
LV2 Global - Action Engine - 0.00161
Single Element Queue - 0.000314

Performance is generally worse if launched from the project rather than opening the test VI directly.  Note that the network shared variable must be used from a project.

As expected, the network shared variable is much better.  The global is 50% faster for scalars than it was in LabVIEW 8.2.  In general, performance improves almost across the board to as good or better than the LabVIEW 7.1 values for scalar values.  Array performance is pretty similar, with some better and some worse.  CIN nodes (GOOP and semaphore) seem to have degraded, now being about half the speed they were in LabVIEW 7.1.

I tested changing the action engine implementation to use an explicit feedback node instead of a shift register in a WHILE loop.  Scalar performance improved a bit - about 6%.  Large array performance improved 70%, making them somewhat competitive with single-element queues and globals.

I plan to start looking at LVOOP implementations and how to optimize them next.
Message 1 of 5

Thanks, Damien. It's good to have the presentation now.

I wanted to go to both (?) your sessions, but unfortunately couldn't, so I also missed out on meeting you.


Try to take over the world!
Message 2 of 5
tst, I feel your pain.  There were some good sessions I was unable to attend because I was presenting.  And my two sessions were scheduled back-to-back, so it cut short any extended conversations after the first.

There is a typo in the first post.  The time unit for the 1MByte reads should be seconds, not milliseconds.
Message 3 of 5

I was able to attend both of your sessions last week, very well done.

Thank you for posting your results and your test code.  It is also good to see the benchmarks in 8.5 to see how they compare to 8.2 since if I remember correctly the times for 8.2 were generally slower than those for 7.1.
Message 4 of 5
Great !

Thanks a lot for posting your benchmarks ! I could not attend to your session either because I had a meeting with the vision R&D.
Technical guys from NI have really done a great job for NIWeek and were really available to discuss. Thumbs up !

We have two ears and one mouth so that we can listen twice as much as we speak.


Antoine Chalons

Message 5 of 5