January 28, 2013

Coordinating lots of views

Tinderbox 1 was designed for a machine of nearly indescribable antiquity: a 600 mHz PowerPC with one core, no GPU, no multitasking, and no screen buffer. And Tinderbox assumes that you’ll have lots of windows viewing the same document. As a result, Tinderbox has an elaborate system for notifying each window about each change in the document, letting it figure out how much work it needs to do.

We’re in a new era. Even low-end laptops have multiple cores and dedicated graphics processors. Everything’s double-buffered, and most stuff is composited from secondary buffers. We have lots more memory.

I sometimes think that all this rigamarole is a waste nowadays. Perhaps we should just update everything periodically, and skip trying to minimize the update work. Sure, some CPU will be wasted, but we waste (potential) CPU cycles all the time simply by not using them. I've got a slew of open programs right now, including Tinderbox, and I think I’m using 40% of one core while the other three twiddle their thumbs.

Still, doing only the work that actually needs to be done feels better.

Update: the consensus view is that wasting CPU cycles is going to be a problem for laptop users who aren’t plugged in. And, increasingly, that’s going to be everybody. So we’re sticking with the old design.