Your intro for optimizing ruby spawned an interesting thought. You could make performance into a unit test using bm. Then as you optimize, you could tell when you had done enough. Also, if you added something later that "broke" performance, you would know immediately.