Efficient Software (by alaric)
So from the perspective of somebody writing a desktop or server-based application, unless you're doing some particularly onerous bulk arithmetic, then by far the biggest impact you can have on the performance of your application would be to reduce the amount of disk I/O it requires. So reducing application bloat (for faster load times and less paging once it's running) and designing compact data formats (for less disk I/O and less network transfer times for server applications) should be your first priority. Followed closely by choosing efficient algorithms (or its close cousin in the server-based application world, setting up your SQL indexes and queries cleverly to avoid table scans; looking something up in an index takes time proportional to the log of the size of the table, while finding something without an index takes time proportional to the size of the table - both with about the same constant factor. For a table of 10,000 rows that's a factor of about 10,000, in other words). Also, for server applications, avoiding contention on locks is important, since there's often a large number of requests being handled at once. Making them all sit idle waiting while one of them holds a lock and is doing some slow disk access means you have a CPU sitting doing nothing. This, again, is a matter of good algorithm choice.
By woolstar, Thu 26th Apr 2007 @ 6:38 am
What I love is that shell sort beats quicksort every time, and its easy, and nobody can tell you precisely how it works. It just does. It doesn't always beat quicksort, but its consistent. Lovely thing.
Btw, the people who care about performance, now live in the land of the mobile phone. Year 2007: cpu 100mgz, memory 8mbs. Wow, seems like I was here before.