Monday, September 06, 2004

Teaching optimization (Hardware)

A comment on an earlier optimization post mentioned hardware.
It is true that buying faster or more hardware is often a easier, and cheaper way to improve performance.But when you have more than a 100 people using the software the cumulative costs of hardware can be quite large. And secondly to use a quote: “A program will expand to fill the available memory and processor time.“A word processor loads and works about a fast as 10 years ago and I predict that it will remain about the same in 10 years. Better hardware may speed up a program but new features will slow the program down again. It is like tug of war, with neither side likely to win.
I have heard the hardware argument used, to defend sloppy, low performing code. And sometimes they are right, and quick enough is enough. But there are also programs which can alway use better performance. An example is weather prediction software. With faster software (or hardware) they will simply run more prediction cases or use calculate more data points. When I talk about optimization I am thinking about these kind of programs.
Lastly I have worked on optimization tasks with improvements of a factor ten to a thousand. That is a lot of money in hardware.
The biggest improvements are made by using smarter algorithms. And again how do find/invent these algorithm and how do I teach it to others?

No comments: