Melbourne Posted July 28, 2009 Report Share Posted July 28, 2009 Hi All I have created several LV .exe’s with file sizes of around the 3Mb mark and have found that they can take up to 10 seconds before their front panels finally appear. This time is radically reduced to say 2 seconds, if and only if, the .exe’s have previously been run on the PC. I have tried various techniques including using a small splash.exe (also created in LV and only 200Kb in size) to call the main .exe, and dynamic loading of portions of the code, but it seems that the load time is not all that dependant upon the size of the LV generated programme being called, but more to do with loading the LV Runtime Engine. Al l the .exe’s were built using LV 8.6.1 utilising the standard/default settings in the App Builder and no Additional Installers were included . What is the fastest/best way to have a LV .exe files load and appear to the user? Is it possible to have the runtime engine load become resident boot up and stay hidden so as to speed up subsequent loading/appearance of the front panels of any LV generated .exe’s? Quote Link to comment
Michael Aivaliotis Posted July 29, 2009 Report Share Posted July 29, 2009 A splash typically solves this problem. This should contain a dynamic call to your main program. You should try not to have any other subVIs in it besides the dynamic call. Keep it very light. You should also display the front panel of the splash first, then do the dynamic call. Quote Link to comment
Melbourne Posted July 29, 2009 Author Report Share Posted July 29, 2009 A splash typically solves this problem. This should contain a dynamic call to your main program. You should try not to have any other subVIs in it besides the dynamic call. Keep it very light. You should also display the front panel of the splash first, then do the dynamic call. Hi Michael I still seem to be having issues with LV .exe load speeds. The main one being the load time, the first time the .exe is opened since the PC was booted up. Once the .exe has been run once it will open almost instantly there after. I have tried creating a very minimalist LV .exe with nothing in it but a small low res image of the splash image I wanted to use on the front panel and a simple call to the “System Exec” pointing to the main .exe: This did improve the load time from around 10 seconds to about 7 seconds for the first running of the programme. All subsequent calls were almost instantaneous and remained so until the machine is subsequently re-booted. I have tried following your suggestion of making a dynamic call to the main VI. This did not seem to improve the load time much at all for the first running of the programme and was much the same as the above method. I suspect there is an issue with the time it takes for the LV runtime engine to come up to speed?? Is it the case the LVRTE remains in memory once its been used and that this is the reason that subsequent calls to any LV.exe are very fast? If this is the case can the LVRTE be forced into memory at bootup? Quote Link to comment
Rolf Kalbermatter Posted July 29, 2009 Report Share Posted July 29, 2009 Hi Michael I still seem to be having issues with LV .exe load speeds. The main one being the load time, the first time the .exe is opened since the PC was booted up. Once the .exe has been run once it will open almost instantly there after. I have tried creating a very minimalist LV .exe with nothing in it but a small low res image of the splash image I wanted to use on the front panel and a simple call to the “System Exec” pointing to the main .exe: This did improve the load time from around 10 seconds to about 7 seconds for the first running of the programme. All subsequent calls were almost instantaneous and remained so until the machine is subsequently re-booted. I have tried following your suggestion of making a dynamic call to the main VI. This did not seem to improve the load time much at all for the first running of the programme and was much the same as the above method. I suspect there is an issue with the time it takes for the LV runtime engine to come up to speed?? Is it the case the LVRTE remains in memory once its been used and that this is the reason that subsequent calls to any LV.exe are very fast? If this is the case can the LVRTE be forced into memory at bootup? No, the LabVIEW runtime does not stay in memory, but Windows does something called application caching. Applications and DLLs once loaded do stay in a special cache that can be activated almost instantaneously on subsequent launches. Without this Internet Explorer would be such a pain to use that nobody would use it anymore. In the case of IE, Microsoft cheats even more as most of the IE engine is part of the shell that gets loaded when you startup Windows and the Explorer instance that displays the desktop. Rolf Kalbermatter Quote Link to comment
Abdullah R Posted July 29, 2009 Report Share Posted July 29, 2009 I have tried creating a very minimalist LV .exe with nothing in it but a small low res image of the splash image I wanted to use on the front panel and a simple call to the “System Exec” pointing to the main .exe: This did improve the load time from around 10 seconds to about 7 seconds for the first running of the programme. All subsequent calls were almost instantaneous and remained so until the machine is subsequently re-booted. 7 seconds?? I am suspecting something else like windows. Did you try running the exe on some other machine that has LVRTE installed? Sometimes windows shell get slowed down and it may not be LV exe thing. Quote Link to comment
Melbourne Posted July 29, 2009 Author Report Share Posted July 29, 2009 Yes, I have run the programmes on several different machines. The load time varies considerably with the machine type/pwer used, but it is always the case that the very first running is way slower than all subsequent runnings. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.