Moving The Bottleneck

Most of you probably get that there will always be a bottleneck in a system. You implement a fix in one place, now something else becomes the constraint. The hard lesson to learn is that there is point of diminishing returns on optimizing (anything). Doesn’t mean you should stop, just that you should think about whether the possible gain is worth chasing. Perf tuning 101, right?

All of that flew through my head recently on a drive-through trip to McDonalds for iced tea. Recently it had been torn down and rebuilt, though the old building seemed perfectly good to me. Overall the new building is different in three big ways:

  • The playplace (where my kids have spent a lot of hours) was seriously downsized
  • The interior is more upscale
  • It has the dual drive-through lanes for taking orders

Interesting to think about what drove those changes. Too much work maintaining the playplace, not enough paying birthday parties? On the inside, maybe it’s to get some of the Starbucks business or the informal meeting place? The drive through lanes seem like the big win. I’ve sat on the side and watched, they definitely can move more people through using that set up (wonder if anyone has tried 3 lanes?).

Where’s the bottleneck? We stopped for tea at lunch time on a weekday and as soon as we moved forward to pay we could see it – traffic trying to make the right-turn-only onto a busy highway wasn’t working too well. Finally someone from McDonalds stepped out to try to wave people on when the road was clear. Not sure that is a good plan, but it helped and we went on with the day.

Does that mean the two lane drive up is a bad idea, a poor optimization? Not to me. It’s a very good optimization most of the time, it’s only at the highest peak times that there is a risk of a new bottleneck – road traffic – becoming the limiting factor. That’s life in the real world. No matter how much optimize when the load gets really heavy we may hit new issues, issues that we could only see if we had taken care of all the smaller bottlenecks first.

Sometimes performance tuning is indexes and hints and all the rest. Sometimes it’s re-imagining the problem and that isn’t easy. Go find a two-lane drive through fast food place, go through and order something to live it, then pull back around and park, watch a while. What could you do to move more vehicles through in the same amount of time?