Compiling executables loop speed

I am trying to optimize speed in my application and was wondering
whether compiling vi's as executables affect loop speed (i.e. for PID
applications)  at all?  Also, I have read that this option
only exists for the Pro Package and was wondering if the "Mass Compile"
option in the Base Package would have any effect either?
Thanks,
Nick

Every time you run a VI, you are running a compiled program. The application builder creates an executable but does not do any extra compilation that has not already been done. The VIs in the exe are built without diagrams and without any debug code and this will result in some slight improvement but usually not anything you can notice. Optimization in the VI can be done in a number of ways. You should start with the shipping document called LabVIEW Performance and Memory Management. This is part of the LabVIEW Bookshelf you can access from the Help menu.

Similar Messages

  • Compiled executable does not open in maximized window

    I have attached a JPG showing the VI Properties that pertain to Window size.  Despite the fact that I have indicated in Run-Time Position - Position:  Maximized.  The compiled executable does not open in a maximized window.
    Even stranger, if I take the shortcut for the program and change it's properties (on the target machine) to Open Maximized, it still doesn't open maximized.
    I have had this behavior with every compiled executable for a couple of years using versions of LabVIEW 8, 2010, 2011 and currently 2011 SP1.  Both the compiling machine and the target machine are Windows XP.
    Is there any explanation for this behavior?  Any way to correct it?
    Solved!
    Go to Solution.
    Attachments:
    VI Properties.JPG ‏81 KB

    I think Ravens Fan is correct. The aspect ratio appears to take precedence over the window position.
    You can set a property manually in your code to maximize the window.
    http://zone.ni.com/reference/en-XX/help/371361H-01/lvprop/vi_fp_winstate/
    Now is the right time to use %^<%Y-%m-%dT%H:%M:%S%3uZ>T
    If you don't hate time zones, you're not a real programmer.
    "You are what you don't automate"
    Inplaceness is synonymous with insidiousness

  • Anyone else annoyed by the location of Xcode4's move of compiled executables?

    Hey all,
    In the older Xcode versions (before 4), the compiled executables were placed in build/Debug under the project's directory.  That made a lot of sense to me.  Xcode4 places the executables out in the user's library directory in some seemingly randomly named directory structure.  Yes, sure, it's able to be located, so not impossible to work with.  When I'm using Xcode, I typically have a few terminal sessions going at the same time (I am developing command-line utilities) and I find it necessary to view code and run the executables.  My workaround is to create a symbolic link (named runtime) in the top-level project directory that points to this Xcode generated directory out in the user Library directory.  This isn't a great workaround because backing up a project is far more difficult (it's in multiple places). 
    Do any of you find this annoying?  Have you found any good workarounds you'd like to share?
    Thanks in advance.

    See Xcode > Preferences > Locations > and select Place build products in locations specified by targets as the preferred build location.  The default is Place build projects in derived data location (default) selection.  For a specific project, see Xcode > File > Project Settings (or Workspace Settings) and change the setting.
    This default derived data directory location scheme is fundamental to preventing the Xcode workspaces from getting tangled.  Secondary to that, it makes it easier to clean up intermediate and derived data if and when and as needed, rather than having to dig it out of individual projects and directories, too.
    To locate the derived data using the Xcode4 default derived data scheme, launch Xcode, open the project, open the Organizer, select Projects, and click on the link over to the derived data directory.
    You can also drag that directory from Finder over to Terminal.app, too, for use in a cd command or otherwise, but you probably know that.
    If you're so inclined, you can also add the link (re)creation into the build itself; add a script to do what you need here.  There's probably one posted somewhere around the net, too.
    For tools-related questions, there's generally more traffic on the Xcode mailing list and in its mailing list archives, or (if you're in the developer's program) via the Developer forums, and there have been some discussions of this.  (These forums don't see as much developer-related traffic.)

  • How can I get the highest control loop speed?

    currently I am doing a nonlinear control.
    whose control loop speed is higher than 20k.
    My PXI is 8145 and 8175 , with DAQ card 6040E.
    Each time I need only one point in and then processing , then output a point.

    I would recommend configuring your program like the example program, Real-Time PID Control.vi, that ships with LabVIEW. You can find it in LabVIEW by going to Help->Find Examples and type "PID" on the search tab. The Real-Time PID Control.vi shows a good way to design your program for a single point in, single point out application.
    If you're aiming for a 20KHz loop speed, you may not be able to attain this with the PXI-8175, assuming you also have a normal priority loop running to handle the communication back to the host computer. To time your code, you can use the NI Timestamp Code Time.vit template that comes with LabVIEW 7 Express. The PXI-8176, benchmarked for sinlge point PID loop rates up to 40 KHz, may be a better solution for you application.
    It is
    also a good idea to disable the USB port and to install only the RT drivers you need. For information on how this is done, follow this link.
    Please let me know if you have further questions.
    Regards,
    Kristi Hummel
    Applications Engineer
    National Instruments

  • Compiled executable language problem(s)

    Hello,
    I have a really annoying problem with unexpected Chinese language instead of the English!
    First the Distributed System manager showed up in Chinese. A search within ni.com hit a document instructing to 1st try and rename the following folder (being originally "ChineseS"):
    ..\Program Files\National Instruments\Shared\System Manager\11.0\Chinese
    I did that and the Distributed System Manager showed up correctly in English! Then I had to check its help and again it showed up in Chinese so I 1st renamed the corresponding subfolder in the:
    ..\Program Files\National Instruments\Shared\System Manager\11.0\help
    However since that had not helped I did the 2nd option - copying the english help file over the chiense... - and that solved the problem.
    Now I am trying to build a HostVI EXE to read a TargetVI EXE from a cRIO and allthough the VI shows correct English, its compiled version shows messed characters like in the "Host VI App.png". "Run-Time Languages.png" shows a working language selection combination. The compiled HostVI EXE simply won't run if the Chinese language is not included. And regardless to the default selection being English - the EXE shows garbage...
    Does anyone know how to solve this ridiculus issue?
    Thanks in advance,
    Attachments:
    Run-Time Languages.png ‏21 KB
    Host VI App.png ‏17 KB

    Hi golubovski,
    I'm sorry to hear that you're having this issue with LabVIEW. In the interest of reproducing your issue, can you confirm that you're using version 2011 of our software and which OS are you using on the two PCs that you mention. Also, to clarify, when you say that this happens on 2/3 of your PCs, do you mean that you have tried compiling the executive on multiple PCs with the development environment, or just that you have tested the compiled executive on multiple PCs? Thank you for your cooperation as we look into the issue!

  • Executable Code Speed Vs. Developmen​t Environmen​t Code Speed under windows 7

    Hi,
    I implemented a "closed loop" type controller in Labview 2012 running on windows 7 to control a motor speed. In my code, I have a main loop that first measures data using a PCI daq card, and then processes the data, and then output data to another PCI daq card. The main loop is set to run at 100Hz. So, 100 times a second I read data, then process the data, then output new data. I am using the Input daq card timing to sync the main loop to 100Hz. When I run this code in the Labview development environment, it seems to run just fine and is able to keep up with the 100hz loop time with no apparent lag. but when I create an executable and run it (on the same machine), it initially appears to run at 100Hz but soon after that it starts to slow down to about 10hz or less. This is causing issues with my motor control. I set the priority of the application under windows task manager to real time (which is the highest option available) to force Windows to let it run as fast as possible but it didn't seem to help much. I compared using a while loop and a timed while loop and found that the while loop ran faster when creating the executable. Any thoughts on what to do to make the executable run faster and why does this happen?
    Thanks

    Can you post the code?
    A wild guess is that there's some array growing wildly causing memory issues, and if you let the program run for a while longer it'll crash with out of memory error.
    Is the program only supposed to feed data from one card to the other?
    /Y
    LabVIEW 8.2 - 2014
    "Only dead fish swim downstream" - "My life for Kudos!" - "Dumb people repeat old mistakes - smart ones create new ones."
    G# - Free award winning reference based OOP for LV

  • Oracle SQL Developer for OSX not able to compile/execute/handle packages?

    Hi,
    Have been stuck with this for quite some mins now,
    When I execute this simple -valid- create package statement in Oracle SQL Developer:
    http://www.pastebin.ca/757859
    It shows it's not compiled and has errors, when I check the Packages part in Oracle SQL Developer I see this:
    http://www.pastebin.ca/757860
    The ; after end has been removed by the application. In fact this means I can't do anything with packages in Oracle SQL Developer for OSX?
    Is this a known bug?
    Or am I doing something wrong?
    Any resolving response to this matter would be really appreciated.

    Yeah, that bug is in there since stoneage, and is really a no-brainer to fix. Until they don't, we'd be losing time recompiling.
    FWIW, everything works fine using the procedure editor for creating, editing and compiling.
    Regards,
    K.

  • New Report compiled executable requires _exclsub.llb?

    When using a compiled version of the office reporting package under win2k to generate a new Excel report, I get a file not found error in the New Report VI. Digging a little in New Report, it seems the VI is expecting the _exclsub.llb to exist in the data subdirectory of the executable. Manually moving _exclsub.llb to the correct spot solves the problem, but is there a better way?

    When building the executable in Application Builder, you must add the _exclsub.llb as a support file. The
    following webpage has some information related to this:
    http://zone.ni.com/devzone/conceptd.nsf/2d17d611efb58b22862567a9006ffe76/08ddbb532e53e96986256a860070a76c?OpenDocument
    The readme file that comes with the toolkit also talks about this.
    Chris_Mitchell
    Product Development Engineer
    Certified LabVIEW Architect

  • WL10 Compiler executable.exec error "too many open files" deploying ear

    When I try to deploy an ear containing a web module and some ejb modules, I obtain this error:
    <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating deploy operation for application, MB-ADM_EAR [archive: /wl/wlments/MB-ADM_EAR/MB-ADM_EAR.ear], to Cluster1 .>
    Task 1 initiated: [Deployer:149026]deploy application MB-ADM_EAR on Cluster1.
    Task 1 failed: [Deployer:149026]deploy application MB-ADM_EAR on Cluster1.
    Target state: deploy failed on Cluster Cluster1
    java.io.IOException: Compiler failed executable.exec:
    /wl/servers/MS1/cache/EJBCompilerCache/-1dj0waj53cbu8/it/apps/ejbs/core/ExSvc_167qnt_Impl.java:17: error while writing it.apps.ejbs.core.ExSvc_167qnt_Impl: /wl/servers/MS1/cache/EJBCompilerCache/-1dj0waj53cbu8/it/apps/ejbs/core/ExSvc_167qnt_Impl.class (Too many open files)If i split the ear in two parts, web in one ear and ejbs in another ear, deploy is succesfull.
    Do you have any idea of what is happening?
    Below the environment specifications:
    JVM Version: jrockit_150_11
    JVM Heap: 512
    Web Logic: 10.0.1.0
    Server: Hewlett Packard DL585 G2
    OS: Linux / 2.6.5-7.287.3.PTF.345489.1-smp
    Thank you, bye,
    Marco

    Hello Marco.
    When you try to deploy an EAR weblogic server at the time of deployment unjar's it and compiles the files and so on. Every Operating system has a limit on how many number of files can be opened by a process. If your EAR is big then the number of files which WLS will unjar will also be large hence you hit the limit. By splitting your ear into 2, you are splitting wls task into smaller parts, which means the number of files it unjars at a time is less.
    The following note tells what needs to be done to avert this issue.
    http://download.oracle.com/docs/cd/E12839_01/doc.1111/e14772/weblogic_server_issues.htm#CHDGFFHD

  • Execute loop for alternate trigger

    Hello:
    I have an existing code (screen shot attached) where I need to make some modifications. In the timed loop, currently the case structure is executed every time a external trial( Trigger In) is sent in. Instead, I want the loop to execute for every other trigger (alternate trigger).
    What would be the best way to do it? Any help would be highly appreciated.
    Thanks
    Attachments:
    test.JPG ‏595 KB

    All in all, there are several things which do not make (much) sense.
    First of all, DAQ Assistant+Time Delay  within a timed loop:
    Regarding to the settings in the DAQ Assistant (we dont see them in your screenshot), it is possible that you already have waiting times in there (e.g. waiting for trigger, {finit} acquisition of a given number of samples at a certain rate, ...). Adding an additional wait time (depending on a single DI value) could easily break the configured timing of the timed loop.
    Secondly, what do you understand with "every trigger"? How do you define this?
    How does trigger, after all, match to a polling (with e.g. 1s cycle time)? 
    Norbert 
    CEO: What exactly is stopping us from doing this?
    Expert: Geometry
    Marketing Manager: Just ignore it.

  • Class compiling/executing JAVA-Code??

    Hi!
    Stupid question: ;-)
    Is there a possibility to "parse" Java-Code into a JAVA-Class or to give JAVA-Code to a class that compiles the code and execute it?
    Thanks for answering!
    Mark Hauchwitz.

    background: we're running servlets and simply need to "parse" specialized/customized java-code for every customer into the servlet code. Source: database or whatever...
    How to get started?

  • Why does LabWindows take so long to execute loops?

    Does anybody have an idea?  I asked NI tech support and he said to remove watchpoints.  I tried to get an answer to my question of what the heck a watchpoint is, but NI has gone home for the day and I still have another 4-6 hours to work.
    I have large buffers that I'm manipulating in loops of 32K.  The loop is executing only a few times a second for a very simple loop.  It takes so long I can't debug my application.  I have no watch windows open.  I've opened a watch window and added every one of my variables then unselected "Update display continuously" but that didn't help.
    Any ideas?
    TIA.
    Dave

    Try posting this to the LabWindows board.
    Try to take over the world!

  • Triggered finite acquisition in a while loop - speed limit ? (newbi)

    Hello,
    I suppose the question already asked and answered but I didn't find exactly what I was looking for, so I'm sorry if it exists somewhere here.
    Usil LV7 with NI 4474 (PCI) acquisition board, PCI-6601 as external trigger, I would like to perform a repeted finite acquisition, starting on external trigger.
    Trigger is working fine (I need up to 20 impulses /s), but the finite acquisition in a while loop doesn't seem to follow the speed. I was thinking it was a CPU proble m and I removed everything which was not absolutely useful.
    So I have a VI with
    1) External trigger output. (express)
    2) While loop with DAQmx Read Analogic Waveform 1 channel N sample, with a DAQmx task as an i
    nput (specifying 50000Hz sample rate, 1000 samples, external trigger start)
    I was able to climb up to 10 cycles/s but above, some ext. triggers are missed.
    Question : where is the problem ? On continuous acquisiton, I can acquire up to 100.000 samples/s but on finite acquisition, I cannot perform 20x1000 samples/s ? What actually specifies the while loop itteration speed ?
    Thank you for your ideas, I'm joining VI capture...
    Attachments:
    vi_ai_external_triggered.JPG ‏31 KB

    I did not the test, but first of all, I think it is not the good way to call your task at each iteration. It is better to configure all elements concerning your aquisition outside the while loop. (external trigger, sampling rate, number of samples.... After you start the DAQmx read (only) in the while loop.
    I think you'd better start from an example from the labview library (attached file)
    Hope it will help you
    Regards
    Attachments:
    Acq&Graph_Voltage-Int_Clk-Dig_Start.vi ‏71 KB

  • Timing loop speed

    Hello,
    Is there a limit to how fast a timed loop can run with an accurate timestamp? I would like to sample at *exactly* every 200 msec, however my output file indicates that it is ~ 200 +/- 10. Is there a better way to create my timestamp? BTW - the Init.vi notes the time in seconds since 1/1/2000 and all subsequent time is relative to the start time. THis is a desired output format that I cannot change. Thanks.
    Attachments:
    InitFile.vi ‏20 KB
    CNAP Daq.vi ‏101 KB

    Why are you using a timed loop?
    In order to sample at precisely 200msec intervals, I suggest you use hardware timing and NOT software timing.  The onboard clocks on the DAQ boards are much, much more accurate than anything you can do in software, timing-wise.
    What I would do is get rid of the timed loop, use hardware timing for the DAQ task, and collect the data as a waveform.  The waveform datatype contains timing information.  Look at some of the examples that ship with LabVIEW.  "Find Examples"..."Hardware input and output"..."DAQmx"..."Analog Measurements".
    Your timestamp is only accurate to ~16msec because it obtains the time from the Windows clock, and that's how accurate the Windows clock is.  That's the best it's ever going to do, so if you need better than that, use hardware timing for your DAQ.
    Hope that helps a bit...
    d

  • Is there a way to do loop speed?

    I am creating a GUI program where the user inputs their First Name and it is stored in a database. I am creating a forloop to output their name in JOptionPane, but the loop goes so fast (low frame rate), that you can't see the input. Help!!!

    Thread.sleep(x);

Maybe you are looking for