This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
I am writing a processor-bound program that makes good use of multi-threading and runs on multi-core processors. It is essential that I wring every ounce of power out of the machine.
The program will read data from a RAM disk, will save statistics to the RAM disk. No graphics are involved, no internet access (for now), disk access required to load the programs and data into RAM disk, but not required during program running (it runs for a week at a time).
This cunning plan is somewhat spoiled by the fact that the operating system is overoccupied with virus scanning, checking for updates, indexing disks, etc, etc, in multiple unnecessary services.
I'd be interested to hear ideas on what makes a good 'bare-bones' OS. Would I be better with Linux? If so, which one? Is there an easy way to shut down all background tasks and services so that my program can get on and do its job.
Here is what I hate about Windows - I can look at the Task Manager list of processes and see all this things taking a little bite of my memory and cpu time and I have no way of knowing which one is essential and which could easily be removed.
I especially hate applications which think it is ever so very important that they grab CPU time and bandwidth to look for updates - no matter what I am trying to do at the time.
(end rant mode)
Joined: Apr 13, 2009
Ironically enough, Sun's Java distributions fall into that category.
If your app loses performance because of some other processes being present on the machine, I have a simple solution for you: spend € 50,- more on the processor and you get 10% more processor power. Now you have plenty of CPU to do your app *and* the update checking. All that for a few bucks.
In other words: what the hell are you worrying about? Based on what actual performance measurement have you come to this conclusion? How have you measured the overhead incurred by the background processes? And what actual percentages have you seen?
For all we know, this app is going to run on a tiny machine duct-taped to a weather balloon. If someone tells you they need to get every ounce of power out of a machine, it doesn't make much sense to tell them to buy a bigger machine -- especially to tell them rudely.
Tommy, Linux is an excellent choice for small/embedded systems. You can install a bare-bones distribution and you can turn off everything you don't need (the suggestion to use Ubuntu Server is pretty funny. That's the last think you want to do.) Some distros -- Coyote Linux is one I'm familiar with -- still fit on a single floppy disk!
One of the best arguments for Linux is the "spending lots of time checking for viruses". At the moment, this isn't a problem with Linux.
Unfortunately, while Linux isn't crammed with stealth processes like "rundll32", the stock distros are pretty hefty these days and a lot of the services leverage off of other services, so you can't just run a "ps" and switch off everything you don't know what it's good for.
It might be worth investigating one of the lightweight OS's such as QNX unless it's a requirement that the OS in question be mainstream and/or "inexpensive". Possibly one of the Real-time operating systems.
An IDE is no substitute for an Intelligent Developer.