Having been a software developer for almost 18 years (mainframes, Unix, DOS, Windows) - before becoming a woodworker - the slowing of a machine over time when using an application was a sign of memory leaks in the program. As a program chugs along, it allocates and deallocates memory for internal use. If memory is allocated and not deallocated properly, it will start to eat computer memory and not return it to the OS. This in turn bogs down everything else running on the computer.
When running the Resource Monitor in Windows 7 64-bit, I've noticed with eCabs V5 that its memory use continues to go up and up over time as the program is running. Each time an operation is performed, resize, faceframe edit, PE, etc., memory usage goes up. When returning to the main CE I would assume that memory use would go back, or close, to what it was prior to doing these other operations taking into account that features added to a cabinet will use more memory. I've also noticed when I do a save, the memory use goes up and does not go back down. Each time I do a save it goes up and up. I can start a cabinet editing session and eCabs will be using around 250MB of memory. After a couple of editor operations it will be up around 400MB. After each save it will increase by 50MB to100MB each time. By the time I'm done working on a cabinet with all the edits and saves, I've had as much as 1GB of memory being used by eCabs.
Another issue is Windows is an interrupt based system. This means an application will be interrupted anytime Windows requires input or a response. The code that is written to handle that request needs to accomplish its task quickly and return control back to the OS ASAP. If an application starts executing a bunch of code and never takes a "breather" to find out if the OS is knocking on the door, then the user interface will start to slow down. You all know the hourglass.
The way we handled processing intensive applications was to spin off separate threads of code that did not require freezing the user interface. The separate thread of code could execute in the background and the user interface would still be responsive and wouldn't give the impression that the application had locked up. For super intensive processing, multiple threads could be spun off to handle different pieces of the task and when finished would wait to sync back up with the other threads. Once all the threads were complete one of the threads would indicate they were finished and the user interface would respond and show the user something was done.
This multi-threading has additional benefits, especially in today's world of multi-core processors. The OS is free to move threads of code to different processors where multiple threads could be running, literally, simultaneously. This type of processing produces incredible performance gains not only for applications but for the system as a whole. This makes the user experience much more positive.
With today's 64-bit environment and access to much more memory, the OS is no longer the bottleneck in application execution speed. The perception of an application running fast or slow is purely a matter of how efficiently the application code has been written. Throwing hardware at an inefficiently written application will not speed up the application. It will certainly help the computer as a whole and make efficiently written programs perform much better.
I have a hunch that some of the performance issues in eCabs also has to do with code modules that Thermwood licenses from other companies to use in eCabs. Hoops for one seems to be at best marginally stable. This is code Thermwoods is not in control of so they, and we, are at the mercy of these other companies developing efficient code.
I am really looking forward to the capabilities and features of V6 once the program makes efficient use of computer resources and really screams along.