Peter Norvig, the Director of Research at Google and all-around AI guru, has an article floating around on the interwebs which you may have heard of: Teach Yourself Programming in Ten Years. As near as I can tell, I’m in year 6 of 10 and intensely interested in knowing how I rank among my peers. Norvig asks a handful of questions that a programmer should know about the hardware he’s working on. As I am also mildly interested in world-domination, I’d add that each of these should be answered for every programmable processor currently available to you, I’m just trying to get a tally on the current and future hardware costs something like world-domination is going to incur.
- How long does it take for your processor to execute an instruction?
- How long does it take for your processor to fetch a word from memory with a:
- cache hit
- cache miss
- How long does it take to read consecutive words from your hard disk?
- How long does it take to seek a new location on your hard disk?
I think that a inventory of currently available programmable platforms and the answers to these questions for each should be a good baseline for discussing how to write kick-ass programs that run as fast they possibly can.