Performanc​e issues - CVI 2010

Hi all,
I have code I've compiled on a development machine - XP Pro with SP3 - and I'm seeing some performance issues on a similarly configured test machine.  2GB Ram, Pentium 4 CPU 2.8GHz.  I had our IT person clean off another machine for me to use exclusively for testing (the other machine is our Tester's PC) and he gave me one with an Intel Core2 4300 @ 1.80 GHz.  My code on my test machine runs like a top with NO problems. 
We have another PC running Win7 on an Intel Core i5-2400 @ 3.10 GHz, RAM = 4GB.  The code should be screaming on this machine but we're seeing performance problems here, too, that I believe may be due to the OS - Win7 may be a real hog.
Can anyone make sense of this?  Is the dual core that much better even though that CPU is rated lower in PassMark Bench Ratings (http://www.cpubenchmark.net/cpu_list.php).  We're trying to work all this out so we can advise the customer on which machine he needs to run our software.
Thanks,
Judy

Hi Judy,
Looking at the spreadsheet it seems unlikely that memory or cpu requirements are the root cause of the issue because the second machine in the spreadsheet with poor "performance" has almost twice the CPU clock speed and twice the physical memory of the fourth machine that runs well.
It sounds like your application is a fairly complex application that involves both GUI components and instrument I/O so what needs to be done is determine what part of the application is causing the bottleneck. There are many different factors which if not considered properly when developing applications that can cause performance problems such as thread deadlocks, device driver problems with the instruments or other hardware, needing to adjust the sleep policy for GUI events, writing to TDMS files in CVI versions before 2010 SP1, having memory leaks in the application code, etc. There is also a KB called Improving Performance of LabWindows™/CVI Applications that describes some changes which may help improve performance.
The overall message is that it is not only CPU speed and quantity of RAM available that can cause performance problems. A way to check the amount of RAM used by an application and CPU Utilization is to use the Windows 7 Resource Monitor to watch the application. This can be done by running Task Manager (ctrl + shift + esc), selecting the Performance tab and pressing Resource Monitor. This will open the Resource Monitor window where you can check CPU usage, Memory, Disk and Network usage for the application while it is running.
Milan

Similar Messages

  • TDMS functions much slower in CVI 2010

    Hello everyone.
    Today I noticed that at least some TDMS functions are much slower in CVI 2010 compared to CVI 2009 SP1 and prior. I have created and attached a simple sample project that creates a TDMS file with about 3000 file level properties and tries to read it back in afterwards. On all releases prior to 2010, this needs less than 10 seconds. On 2010 it's around an hour, if not more! Unfortunateky this is pretty much a show-stopper for me. Any comments?
    Thanks, Marcel 
    Attachments:
    tdmsTimingTest.zip ‏3 KB

    Hello Marcel -
    What you've reported is actually a known issue, and is unfortunately considered to be expected behavior.  Let me try to explain:
    There was a relatively large refactoring of the underlying TDMS code in LabWindows/CVI 2010.  This refactoring was intended to more closely align our internal implementation to that of LabVIEW.  As a result of this refactoring, we were able to address some internal issues we had previously been unable to address, as well as more correctly handle the data stored in the TDMS file.  Unfortunately, this refactoring unmasked a performance issue that had always been present when reading a large number of properties one at a time.
    This performance issue was not uncovered for LabWindows/CVI 2010 because we had previously focused our performance testing on reading and writing data to a file, not metadata.  We considered it unlikely that a customer would have more than dozens of properties for any one channel or group or file, and as a result, the performance issues you've reported were overlooked.
    However, we did recently find the performance issues you've reported.  As a result, there will be a handful of undocumented functions for returning all (or a subset of) properties on a channel, group, or file in LabWindows/CVI 2010 SP1.  This will allow for performance in line with what you'd seen in LabWindows/CVI 2009 SP1 and earlier, as long as you are OK with grabbing all the properties at once.  These functions are undocumented because, in general, we don't release new features with service packs.  Also, the functions are a little more difficult to use than normal CVI APIs, so we have not yet determined how or when they will be publicly documented.  When LabWindows/CVI 2010 SP1 releases (later this summer), feel free to reply back to this post or send me a private message, and I'll work with you on the details of calling these undocumented functions.
    Out of curiosity, we'd like to know your use case for creating that many properties.  You're the first customer we've encountered using such a large number of properties, and we'd like to ensure that we are able to satisfy your use case in future versions of the API.
    Thanks for the report, and I'm sorry for any inconvenience this has caused,
    NickB
    National Instruments

  • 'Mesa.dll could not be found' received from CVI 2010 installati​on

    When I launch an executable that was installed from a distribution kit created with CVI 2010 (360), I get the message 'Mesa.dll could not be found'. But I can see that the file was installed at C:\Program Files\National Instruments\Shared\Mesa.  If I replace this file with an older mesa.dll from a previous version of CVI, my newly installed executable launches correctly.
    Solved!
    Go to Solution.

    I found exactly the same problem in a project where I include only "Standard Run-Time" item, so I read your suggestion:
    Install the full CVI runtime             ->              I don't like having to install unnecessary components
    leave out the ActiveX module         ->              not included
    install the VS C++ runtime on the deployment machine           ->            I downloaded and installed this package, and this fixes the issue, but the user has to launch another additional installer.
    Could you attach to this discussion the right Merge Module (*.msm file) that I can add to my Distribution Kit? (as done for this old issue)
    Vix
    In claris non fit interpretatio
    Using LV 2013 SP1 on Win 7 64bit
    Using LV 8.2.1 on WinXP SP3
    Using CVI 2012 SP1 on Win 7 64bit, WinXP and WinXP Embedded
    Using CVI 6.0 on Win2k, WinXP and WinXP Embedded

  • Cvi 2010 menu preventing callback execution

    Hi y'all
    i am using cvi 2010 and i am having an issue with the menu selection field not allowing the execution of the serial callback function. When you hover over the menu  without selecting it, its ok, if you click on the menu and during the time you are making a selection  the callback execution never gets called.
    the callback also seems to get inturupted by user input events ie.. selecting a numerical box, command boxs etc 
    This happens in both bebugging and the release executable.
    is this a known issue?

    unless someone knows a different solution this is what i dug up
    http://digital.ni.com/public.nsf/allkb/34D1A6C408FAF9BE86256C710080CCA7

  • CVI 2010 distributi​on not writing / updating files

    Hi,
    I have recently an installation/distribution of some software created in CVI 2010 to a client whoes PC's hard-drive had failed. They re-installed the software ok and it ran a test but when they came to save the data or any of the machine settings non of the files were updated.
    They are using Windows 7 and I asked them to run the executable again as an administrator but still the same problem.
    I then sent them a copy of just the application (which was the same as the one they had installed) and they manually copied this onto the PC  overwritting the version that had been installed and it all ran ok.
    Is there something Windows 7 is doing with the installation and security/permissions? Is there anything I can set when creating the distribution that can overcome this?
    Thanks

    Hi Dave,
    It sounds like there may be access rights issues with the files you are creating/saving within your program. Which windows directory do you write your files to from within the exe? For the example the root (C) directory by default on Windows is typically restricted in access, even for the Administrator until it's disabled.
    Kind Regards,
    Paul
    http://www.paulharris.engineering

  • Does the CVI 2010 SP1 download link work?

    The file downloaded from the SP1 link seems to be the non serviced pack version. After the "install" which proceeded way too quickly, the Help >>About still shows LW/CVI 2010 Version 10.0.0(360). Am I missing something or am I just too early?
    Solved!
    Go to Solution.

    Wolfgang - you just beat me to it   They should be updated now.
    blakney - Service Pack updates will only be available through Update Service 2.0, and they will actually not be available through Update Service 2.0 for another month or so.  There are some issues we're still trying to work out to make sure the Update Service experience is good for everyone.
    NickB
    National Instruments

  • How can I convert a project from LabWindows/CVI 2010 to a Visual Studio 2011 project?

    I have a good sized project, 12 source files, 14 headers, 1 uir, that I want to be able to edit and compile in MS Visual Studio 2011, MSVC++.
    I remember being told that LabWindows dropped support for C++ in 2008 and no longer had a wizard for converting projects. I know I can go the DLL route, but I have never created a DLL before and wouldn't know where to begin with it. What would be the best way to go about this conversion?
    Solved!
    Go to Solution.

    CVI 2010 still supports the Visual Studio Conversion Wizard for Visual Studio 2005/2008. We do plan to add support for VS 2010 in a future release.
    If you need a VS 2010 project now, you can use the Visual Studio 2008 conversion wizard, then upgrade the VS 2008 project to VS 2010.
    National Instruments
    Product Support Engineer

  • Problem with inifile.c in CVI 2010 project

    I upgraded to CVI 2010 today. I was using 2009. In my project I have included inifile.c in my project. The file is located in the CVI2010 toolbox directory. I used this in CVI 2009 and did not have a problem. When I compile I get a bunch of link errors "Undefined symbol". Some of the symbols it has a problem with are ConvertDataToText, AppendString, StrDup, FileExists, ... there are many more.
    My question is why are these linking errors coming up in CVI 2010?
    I would imagine I need to add another source file to my project or something like that.

    It's true that using .FPs is the best way to go.
    As I told you, an instrument driver can be loaded in Instrument menu
    or in the Library menu. If loaded in Intrument menu, to have it loaded
    automatically when you open a project you must add the .fp to the
    project itself; operating this way, every time you open a project it
    will recompile the instrument, which can be annoying and is a waste of
    time. On the other hand, if the instrument has an object file (which is
    the case of IniFile and all instruments shipped with CVI) you can load
    it in the library menu (Library >> Customize and add it to the
    list) and have it ready for use with no time spent on it.
    I personally have loaded in the library collection a set of
    general-use instrument that I happen to use in almost all my projects
    (IniFile, Programmer's Toolbox, Password control and a library with my
    own utilities) and only use the instrument menu for instruments very
    specific to one or a few projects (e.g. the driver for some external
    device I use in a project)
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

  • Exchange 2013 Issue: Outlook 2010 auto populating the From Tab when forwarding email

    Exchange 2013 Issue: Outlook 2010 auto populating the From Tab when forwarding email        
    I am running Exchange 2013 and I have an end user who connects to it via Outlook 2010. All was going well till he went to forward an email and he noticed that the From button appeared and auto populated the sender's email address.
    I have clicked the Empty Auto Complete List in Outlook's Send messages... still displayed the From tab when forwarding.
    I recreated the profile in outlook... same thing.
    I created the profile with outlook 2013... same thing.
    There is only one user profile setup in Outlook.
    (I know the from tab usually appears when you have multiple profiles setup in Outlook and/or when you configure the "From" tab.)
    I opened the end user's email in Exch 2013's OWA... what was different here was when I clicked on the email and it opened, it did NOT have the Reply or Forward option... and it displayed as a "Draft" email.
    Does anyone have any ideas?

    So are you saying that the from button is filling the option with the original senders address (eg the person who sent the message to your user), or that it's filling in the your users address (in which case I don't understand what the issue is, since
    it IS going from your user)?

  • Announcement: LabWindows/CVI 2010 SP1 Run-Time Engine Updated

    A new version of the LabWindows/CVI 2010 SP1 Run-Time Engine (10.0.1.434) is now available for download. The new version includes Security Update 5Q5FJ4QW which resolves security vulnerabilities in components installed with LabWindows/CVI 2010 SP1 and earlier and LabVIEW 2011 and earlier. Further details can be found at KnowledgeBase Article 5Q5FJ4QW: How Does National Instruments Security Update 5Q5FJ4QW Affect Me? Installing the security update will have the same effect as installing the new version of the Run-Time Engine.
    The update can be downloaded from the Drivers and Updates page. The LabWindows/CVIRun-Time Engine is a free download.
    National Instruments
    Product Support Engineer

    The correct link should be this one
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

  • Labwindows CVI 2010 and GetProcessAddress()

    I am using Labwindows CVI 2010 v10.0.1 after upgrading from version CVI 2010 v10.0.0. After the upgrade, I have a compile error from a statement that compiles just fine in the previous version. The error is:
    "Operands of = have illegal types 'pointer to __stdcall int function(int,pointer to char,pointer to char,pointer to char,int,pointer to char,pointer to char)' and 'FARPROC'."
    What causes this error is the following statement in the code:
    my_FP = GetProcAddress(dll_handle, "DLL_FUNCT");
    and the definition of my_FP is:
    int __stdcall (*my_FP)(int x, char y[], char z[], char *m, int g, char A[], char B[]);
    (function names and parameters have been changed for simplicity)
    As I said, this line compiles just fine in 10.0.0, but not in 10.0.1. Is there a specific update to the compiler that will cause this error? What can be done to fix this?
    Thank you very much for your time and help.
    Solved!
    Go to Solution.

    You're correct. This was caused by a change in CVI Windows SDK headers that took place in version 2010 SP1. The change was associated with bug fix #275934. Unfortunately, this bug fix introduced this undesirable side effect of requiring a cast for any function that returns a FARPROC function poinrter (such as GetProcAddress). Upon further reflection, this side effect is unacceptable, and needs to be corrected in the next release. This is being tracked internally with bug ID #336341.
    I'm really sorry for this inconvenience. Until the problem is resolved, using the typedef & cast solution that you already implemented is a valid workaround.
    An alternative workaround, in case you're worried about other projects, or other functions, where this error might also pop up, is to edit CVI2010\sdk\include\windef.h and replace the following FARPROC definitions (in lines 226 and 230, respectively):
    typedef INT_PTR (FAR WINAPI *FARPROC)(void);
    typedef int (FAR WINAPI *FARPROC)(void);
    with:
    typedef INT_PTR (FAR WINAPI *FARPROC)();
    typedef int (FAR WINAPI *FARPROC)();
    Doing this will avoid the problem throughout a given installation of CVI.
    Luis
    NI

  • Dynamic memory is corrupt (Labwindows/cvi 2010)

    I have a multi threaded application....where I have a buffers allocated ineternally in the threads,,...A user interface is present to abort the therad execution.
    Here is the code in one of the threads (NOTE: status is set by a user button to EXIT the program):
    int EthernetDataStructureThread (void *functionData)
        CmtSetCurrentThreadPriority (2);
        EthernetData GetData={0}, *data=NULL;
        data = &GetData;
        /* Use a buffer to read the data from the queue which is coming from TCP read with fresh data */
        const void *BufferEth;
        int BytesRead=0;
        int BytesWritten=0;
        char ReadErrorMessage[256];
        BOOL bitset = FALSE;
        if ( (BufferEth = (EthernetData*)malloc(EthernetDataSize)) != NULL)
            while ( !status )
                BytesRead = CmtReadTSQData (Queue_TCPRead_EthernetData, BufferEth, EthernetDataSize, TSQ_INFINITE_TIMEOUT, 0);
                memcpy (data, BufferEth, EthernetDataSize);
                /* Empty the queue so that we don't have data in next time. */
                CmtFlushTSQ (Queue_TCPRead_EthernetData, TSQ_FLUSH_ALL, NULL);
                //Pass on the data to the Main thread
                BytesWritten = CmtWriteTSQData (Queue_EthernetData_Main, BufferEth , EthernetDataSize, 1, NULL);
                if ( BytesWritten != EthernetDataSize)
                     free(BufferEth);
                    BufferEth = NULL;
                    exit(0);
                Delay(0.02);
            if (status && !bitset)
                free(BufferEth);
                BufferEth = NULL;
                bitset = TRUE;
        return 0;
    My problem is: free(BuffEth) always says Dynamic Memory is corrupt......When I put a breakpoint and keep seeing the resource tracking window, I can see it getting executed fine as the resource tracking window greys out the memory block....but then suddenly free wants to exceute again...and causes the "dynamic memory is corrupt" error.
    I am using LABWINDOWS /CVI 2010 SP1 in WinXP.
    Please help me ASAP....very much appreciated.
    Regards
    NITIN
    -Nharish

    Thank you for your reply Jackie.
    I am calling Free only once...there is an If condition there.
    See the attched video for my problem...Free frees the memory block (see the greyed out portion in resource tracking window but still the statement controls remains there and free executes again, throwing error).
    Do you  think it is some sort of bug in LABWINDOWS.
    See the attached video.
    -Nharish
    Attachments:
    FreeproblemLabwindows.avi ‏4781 KB

  • Dependenci​es error CVI 2010

    Hi,
    I have started to use CVI 2010.
    I loaded one of my projects which runs perfectly with CVI2009 but as I wanted to create a distribution kit I got the following error
    How can I solve it?
    In fact the application is not running on a user computer. I get the error Mesa.dll is missing.
    I'm working with Win7
    Bertrand

    The ActiveX container error is probably unrelated to the Mesa.dll error. I can guess at what is causing that missing modules popup (for the Mesa.dll error, we'll probably need additional information from you)
    I assume you have deselected the top-level "LabWindows/CVI Run-Time Engine" item in the Drivers and Components tab of the Edit Distribution dialog and then selected one or more of its sub-items. Or, alternatively, you have selected the "Install LabWindows/CVI Run-Time Engine in the application directory" option in the Advanced tab. If you haven't done either of these, then this error should not happen.
    Does your application use ActiveX controls? If not, then you can de-select the "ActiveX Container Support" sub-item in the Drivers and Components tab and the error will also go away without any negative impact in your distribution.
    The probable reason for this error is that you somehow ended up with updated VC90 modules in your computer but the newer modules have different signatures, such that they no longer match the expected signatures of the declared dependencies of the ActiveX container module. If you do use ActiveX controls, and you also need the "Install LabWindows/CVI Run-Time Engine in the application directory" option or you need to keep your distribution small (which is the reason why you wouldn't have the top-level "LabWindows/CVI Run-Time Engine" item selected, then you can work around this problem by clicking the Add Module button in the Drivers and Components tab and adding the two following modules from your C:\Program Files\Common Files\Merge Modules folder (C:\Program Files (x86)\Common Files\Merge Modules if you're in a 64-bit operating system):
    Microsoft_VC90_CRT_x86.msm
    Microsoft_VC90_MFC_x86.msm
    You will still see the error popup if you click on the Check Module Dependencies button, but there shouldn't be any problem at all.
    Luis

  • Labwindows cvi 2010 sp1 Device drivers

    Hi all
      I am trying to install cvi 2010 sp1 and it is asking for the Device Drivers for the program, where can I find the drivers for the sp1.
    To finish installing
    I have some older drivers but what is the latest for sp1
    Thanks in advance

    Hi Iriddick,
    You can choose to not install the Device Drivers with CVI and you will not get that window.  You can also cancel installing the Device Drivers without cancelling the CVI installation.  If you would like to install the Device Drivers, you can find the latest version by searching for "device drivers" at the ni.com main page.  The current latest version is the NI Device Drivers 2011.08.
    Regards,
    Brandon V.
    Applications Engineering
    National Instruments
    www.ni.com/support

  • CVI 2010 compiler crash

    This short piece of code below causes compiler crash in CVI 2010 - in CVI9.0 it works fine.
    Thanks for help.
    jirjan
    /* Compiler Crash example, CVI 2010 - v10.0.0 */
    static void fctDummy1(void) {};
    static void fctDummy2(void) {};
    typedef struct tagMyStruct
      void (*DummyFunction1)  ( void );
      void (*DummyFunction2)  ( void );
    } tMyStruct;
             tMyStruct MyFctStruct         = {fctDummy1, fctDummy2};
    const tMyStruct MyConstFctStruct = {fctDummy1, fctDummy2};
    void MyTest(void)
       MyFctStruct.DummyFunction1();
       MyFctStruct.DummyFunction2();
       /* this line doesn't cause the compiler crash...!!*/
       MyConstFctStruct.DummyFunction1();
       /* BUT next line caused the compiler crash...!!*/
       MyConstFctStruct.DummyFunction2();

    It is a very simple project with one source file only - sending in attachment (adapt to your project path or create simple project with .c file)..As I wrote before - with CVI9.0 (and/or any C compiler) I can compile the source file, CVI 2010 crashes while compiling..
    Thanks for your time
    Jiri
    Attachments:
    CompilerTest.zip ‏3 KB

Maybe you are looking for