Jump to content

Huge performance deterioration with LV2014


Recommended Posts

Before making the switch from LV2011 to LV2014, I ran the exact same test with the 2 versions (2011 and 2014) of my application. I recorded the CPU usage and discovered a huge deterioration of in LV2014.

 

Is anybody aware of any change between LV2011 and LV2014 that could impact the performances like this?

 

I should mention that the unit on the Y-scale is %CPU and the X-scale is MM:SS

post-14511-0-72714700-1414017535_thumb.p

Edited by Manudelavega
Link to post
Share on other sites

I edited my message to mention the scales. The Y-scale is the percentage of CPU used by the application (like the number you can read in the Windows Task Manager), and the X-scale is the time, expressed as MM:SS. The shape of the plots or their absolute values are of little importance (I was performing specific operations at given time). What is noteworthy is the factor 2 between the 2 plots..

Link to post
Share on other sites

Compiled with different optimiser settings? One in LVx32 the other in x64? The girl in the next cubical had a headache? It's a bit of a "my mums dog won't bark at strangers".

 

There is a performance monitor (Tools>>Profle>>Performance And Memory). Inspection of that while running may identify the VIs that are working harder than usual and may provide a hint at what is different.

Edited by ShaunR
Link to post
Share on other sites

your app is using more CPU but is it running as fast, faster or slower.

I mean... ok it takes twice as much CPU but you don't say anything about what it does and if it runs faster.

 

Reminds me of early SSD benchmarks which were surprised that the drives were using more power than expected and were disappointed until someone realised it was important to look at the power / GB Transfer number which suddenly looked much better since the drives were MUCH faster than traditional HDDs.

Link to post
Share on other sites

It's a bit of a "my mums dog won't bark at strangers".

Is this a UK thing?  I searched google and all that came up were tips on how to get your dog to not bark.

 

In any case I haven't used 2014 much but haven't seen this behavior yet.  I'd need to see more evidence in the form of a VI that could be ran which demonstrated this.  NI would likely be very interested in this VI too if it can help them create better performing releases in the future.

Link to post
Share on other sites

Before making the switch from LV2011 to LV2014, I ran the exact same test with the 2 versions (2011 and 2014) of my application. I recorded the CPU usage and discovered a huge deterioration of in LV2014.

 

Is anybody aware of any change between LV2011 and LV2014 that could impact the performances like this?

 

I should mention that the unit on the Y-scale is %CPU and the X-scale is MM:SS

 

I loaded the project I last worked on into 2011 and then 2014 while recording the CPU usage.   Both use about 25% of the processing power. 

 

I really have not seen anything slow down or take more processing power.   Wonder what you are doing that you see this sort of change.

post-22844-0-54029700-1414070110_thumb.p

Edited by JoeQ
Link to post
Share on other sites

Compiled with different optimiser settings? One in LVx32 the other in x64? The girl in the next cubical had a headache? It's a bit of a "my mums dog won't bark at strangers".

 

Both LVx32. Settings-wise, I made a copy of all the files - including the project file -, opened the application in LV2014, saved all of them in LV2014, and started the build. So all the settings should be the same. I checked the Advanced page of the build specification, it is the same: Debugging disabled, SSE2 optimization enabled (other settings are the same as well).

 

your app is using more CPU but is it running as fast, faster or slower.

 

I understand your point (and Shoneill's), but in my case the application's performances are also worse. At time = 01:00, I start the communication on 3 CAN bus and log the CAN messages in a file. The analysis of this file shows a determinism way worse in the LV2014 version. So the application is kind of chocking in LV2014... FYI, at time = 03:00 I also start some automation, which explains the second rise of the CPU%.

 

As a general comment, I'm not saying LV2014 has bad performances as an absolute statement. I think all of you are correct to say it comes from my application itself. I posted here to see if anybody else had had this issue...

Link to post
Share on other sites

I am curious when you ran the test, did you have just 2011 installed for the first part, then install 2014 to run the second part?  Or was 2014 installed, then you ran both tests.    Reason I ask is I am curious if this was something in the way they talk with your specific hardware.    If they can mess up something as simple as a RS232 port, it's no impossible that they messed up your CAN interface. 

 

It will be interesting to hear what you find was the cause.

Link to post
Share on other sites

Is this a UK thing?  I searched google and all that came up were tips on how to get your dog to not bark.

 

In any case I haven't used 2014 much but haven't seen this behavior yet.  I'd need to see more evidence in the form of a VI that could be ran which demonstrated this.  NI would likely be very interested in this VI too if it can help them create better performing releases in the future.

It's an old (very, very old) joke that relies on making an assumption about the first persons statement with regards to his perception of the problem.

 

My mums dog won't bark at strangers.

Your mum doesn't have a dog.

Edited by ShaunR
Link to post
Share on other sites

I was guessing it would be the low level interface but sounds like this is not the case.   Something in how you handle the CAN communications on your side.   If I understand your graphs, you suggest you are using 20% with the CAN and without you are at 2%.    CAN is a VERY slow bus, 500k maybe a 1meg?    To see 20% I suspect you have the code structured so you stall out when waiting for CAN data.    

Link to post
Share on other sites

Yes, the 3 CANbus have a 500k Baud rate. On the 3 buses, the application send and receive several messages every 10ms. Each send message has to be prepared, and each received message has to be parsed, so overall it's true that it is an intense process...

 

Which order did you install the drivers and LV IDEs?

 

Maybe try re-installing the CAN drivers after installing both versions of LV?

 

Well this PC previously had older versions of NI-CAN, NI-VISA, etc. that I upgraded to the 14.0 versions. Do you think I should try to take a "clean" PC with no NI products at all, and install only what I need?

Link to post
Share on other sites

If I understand the data you show,  2011 is still working even with the 2014 installed.  Based on this, I do not believe a clean PC is going to change anything.  

 

What does the profile tool show?

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Taylorh140
      I have never gotten the performance that I desire out of the 2D picture control. I always think that it should be cheaper than using controls since they don't have to handle user inputs and click events etc. But they always seem to be slower.
      I was wondering if any of the wizards out there had any 2d picture control performance tips that could help me out?
      Some things that come to mind as far as questions go:
      Is the conversion to from pixmap to/from picture costly?
      Why does the picture control behave poorly when in a Shift register?
      What do the Erase first settings cost performance wise?
      Anything you can think of that are bad ideas with picture controls?
      Anything you can think of that is generally a good idea with picture controls?
    • By flowschi
      Hello,
      I am using the variantconfig.llb for saving/loading configuration files.
      Unfortunately these configuration-files got very huge: 10.000 lines or even more, having hundreds of sections.
      Loading these files takes 15-30 seconds. The workflow:
      - getting all sections with "Get Section Names.vi" (is very fast)
      - a for-loop is using "Read Section Cluster_ogtk.vi" on each section Name (using Profiler, I can see that this uses the most amount of time). Depending on the section name, I am selecting the cluster type.
       
      Do you have any hints, how I can speed up the process?
      Thanks!

    • By madskg
      I'm using a Labview Shared Library (DLL) to comunicate between a C# program (made by another company) and a labview Executeable (which means different processes) on the same PC. Currently i'm using network published shared variables, to communicate between the Labview DLL and the LABVIEW program (both made by me) which works well, except for the performance.
       
      Each time the DLL is called it needs to connect to the shared variable, which takes between 50 and 300 ms. When it is connected, the data transfer is instant. I have tried to use the PSP "Open Variable Connection In Background", which is a bit faster, because it doesn't wait to verify the connection. But it still adds some overhead.
       
      I have also tried to use notifiers from this example: https://lavag.org/topic/10408-communication-between-projects/ . Opening connection and sending the notifier takes 50 - 100 ms.
       
      I guess both the notifier and the shared variables are "slow" because they use the network communication, even if it is the same pc both programs are running on (localhost).
       
      Does any of you know of a faster method of communicating between a program that is running continuesly (connection open constantly) and one only exectuted when new data is ready (connection "re"-opened on every instance)?
       
      Thanks in advance.
       
      Best Regards
      Mads
       
       
       
       
       
       
    • By bigjoepops
      I am trying to create a code section that will take a 1D array and create a moving average array.  Sorry if this is a bad description.  I want to take x elements of the input array, average them, and put that average in the first element of a new array.  Then take the next x elements, average them, and put them as the second element of the new array.  I want this done until the array is empty.
       
      I have two possible ways to do it, but neither are running as fast as I wanted them to.  I want to see if anyone knows of a faster way to conduct this averaging.
       
      Thanks
      Joe


    • By Oakromulo
      After two years "leeching" content every now and then from the Lava community I think it's time to contribute a little bit.
      Right now, I'm working on a project that involves lots of data mining operations through a neurofuzzy controller to predict future values from some inputs. For this reason, the code needs to be as optimized as possible. With that idea in mind I've tried to implement the same controller using both a Formula Node structure and Standard 1D Array Operators inside an inlined SubVI.
      Well... the results have been impressive for me. I've thought the SubVI with the Formula Node would perform a little bit better than the other one with standard array operators. In fact, it was quite the opposite. The inlined SubVI was consistently around 26% faster.
      Inlined Std SubVI

      Formula Node SubVI

      evalSugenoFnode.vi
      evalSugenoInline.vi
      perfComp.vi
      PerfCompProject.zip
×
×
  • Create New...

Important Information

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