programming in the
twenty-first century

It's not about technology for its own sake. It's about being able to implement your ideas.

Things to Optimize Besides Speed and Memory

Whittling down a function to accomplish the same result with fewer instructions is, unfortunately, fun. It's a mind teaser in the same way that crossword puzzles and Sudoku are. Yet it's a waste of time to finely hone a C++ routine that would be more than fast enough if implemented in interpreted Python. Fortunately, there are plenty of other targets for that optimization instinct, and it's worth retraining your habits to give these aspects of your projects more attention:

Power consumption, battery life, heat, and fan noise.

Number of disk sector writes (especially for solid-state drives). Are you rewriting files that haven't changed?

Overall documentation size and complexity.

How much time it takes to read a tutorial--and the engagement level of that tutorial.

Number of bytes of network traffic. The multiplayer game folks have been concerned with this from the start, but now almost every application has some level of network traffic that might go over non-free phone networks or through slow public Wi-Fi.

#include file size. This is more about the number of entities exposed than the byte count.

Number of taps/clicks it takes to accomplish a task.

App startup time.

How long it takes to do a full rebuild of your project. Or how long it takes to make usability tweaks and verify that they work.

The number of special cases that must be documented, either to the user or in your code.

Blog entry length.

(If you liked this, you might enjoy "Avoid Premature Optimization" Does Not Mean "Write Dumb Code".)

permalink July 12, 2012



twitter / mail

I'm James Hague, a recovering programmer who has been designing video games since the 1980s. Programming Without Being Obsessed With Programming and Organizational Skills Beat Algorithmic Wizardry are good starting points. For the older stuff, try the 2012 Retrospective.

Where are the comments?