Obviously subsequent queries are going to be faster - at that point it's cached. That's the point of aggressive/speculative caching: it's so the first (and in practice this will be your only) query is faster. If you want to accurately average across multiple measurements, you need to space those measurements hours or days apart.
What you really want to do is log performance under real conditions over an extended period of time and then evaluate the results.
Given that the differences in query time between various DNS solutions are significant but minor, you will almost certainly find differences in performance that you hadn't thought about.
I'm updating the post (http://www.manu-j.com/blog/opendns-alternative-google-dns-ro...) as results keep coming in (India, Italy, NYC, Houston). From the looks of it, google is the best for international users and Level 3 (4.2.2.2) or openDNS for americans.
OpenDNS has servers here in London, so they put up a fairly good showing. And obviously there's some jitter - the 350ms reddit result is an anomaly - but a few other runs turned up 216ms and 378ms - must be something odd about it.
Fascinating. It's interesting to see that their times aren't always the fastest, but they seem able to keep responses speedy on the sites the other two struggle with (bbc and tb4). Maybe that's the prefetching at work?
It's a bit hard to do the math in bash, but you'd also probably want to determine the mean and standard deviation for a population of checks (at least 10 or so).
You could calculate it across a lot of domains, or calculate it with a lot of checks to one server.
Using the script provided here: http://www.manu-j.com/blog/opendns-alternative-google-dns-ro...