Message Edited by altenbach on 02-28-2006 09:48 AM
For you folks that have issues with LabVIEW and strings, think about doing string operations in a language like Perl or Tcl/Tk.
I have an old package I wrote to let me call Tcl/Tk from LabVIEW. I dump the string into Tcl, then hit Tcl with whatever string operations are needed. Tcl is lightning fast with lists, strings, and regular expressions (uses Perls regexp 5 code). When the result is found, I suck it back into LabVIEW and dump the Tcl session. This keeps memory management clean and allows the vastly superior string memory manager in Tcl to pull the heavy load. This process also cuts down on speggetti LabVIEW code to do the string manipulation.
Another suggestion is to open a memory-locked file and pass big blocks around that way. Windows treats it like shared memory between processes. Dump in your data, call some other program via ActiveX (and yes, IPC is painfully slow when limited to ActiveX), let the other program pull the data from the shared memory and compute. Pull the result back in from shared memory in LV and move on. This works well with complex data types and big(!) data sets that ActiveX would choke on. Think DSP functions.
BTW, LabVIEW rocks, keep up the good work NI! I regularly win contests with my peers who tell me that LabVIEW is slow. While they're still coding their version, I walk up with the answer and blow them away. It's not about run-time speed, it's about time-to-solution, don't lose the formula.
Just want to highlight the last part of Underflow's post:
Which default installed services from NI can be safely turned off to free up memory/processor? Obviously, there is a dependency system, but what SW components are dependent on what services? Is there a management component for these services?
This kind of thing has been a major pet peeve for me the last several years. Not just NI software, but pretty much ALL big-company software. Every time I do an install, I have to chase it around with a virtual pooper scooper. Delete the shortcut off the desktop & the top level of the start menu, stop the items in the system tray and find the option that keeps them from going back there again, set the option that makes it stop nagging me to let it be the default application associated with a bunch of my files, check the task manager for services and processes that are running and use msconfig or the admin console to experiment at stopping and/or disabling them, and so on, and so on, and so on.
It's like every piece of software thinks it should be the one running your computer instead of you. And I actually understand a bit how we've gotten here -- as time has gone one, computers are more and more like a home appliance that everyone owns. And that has only happened *because* software tries to run things for you. People who aren't computer-savvy wouldn't buy a computer, or a printer, or a digital camera, or an iPod, etc., if they needed a lot of tech knowledge before using it. So I see why the software vendors setup all these annoying defaults -- I just wish they'd show more respect to the power users among us, and make it easier to selectively install only the stuff we want.
So that brings me back to NI, whose user base is signficantly more tech-savvy than the general population. But even with NI, I keep disabling the USB device detector in the system tray because I don't use any of the USB DAQ devices. And I often disable some Lookout and Citadel stuff with no obvious ill effects on the theory that I'm not using them either. There are still at least another 5-10 more services and processes I'm not sure about, and it sure seems that in the Task Manager, just about every process listed thinks it needs to hoard 4 MB or more. I can generally google the microsoft services to find out what to disable, but haven't found similar info about the NI services. I'd like to stop and disable whatever is unnecessary, but trial-and-error hasn't been a very effective way to figure that out.
Just a general suggestion,
I think if graphing could be faster, that would help. Escpescially STFT graphs.... the FFT algorithms are pretty fast, no complaints from me about those, but the graphing is somwhow doubling my execution time. Also the amplitude spectrum VI is about twice as slow as the power spectrum VI .. why .. when I use the sqrt function to achieve the same result, it doesn't slow it down that much!
lv 8.2, 2500+ AMD cpu on 1GB ram