[Python-Dev] Stop using timeit, use perf.timeit!
Steven D'Aprano
steve at pearwood.info
Mon Jun 13 00:29:31 EDT 2016
On Sat, Jun 11, 2016 at 07:43:18PM -0400, Random832 wrote:
> On Fri, Jun 10, 2016, at 21:45, Steven D'Aprano wrote:
> > If you express your performances as speeds (as "calculations per
> > second") then the harmonic mean is the right way to average them.
>
> That's true in so far as you get the same result as if you were to take
> the arithmetic mean of the times and then converted from that to
> calculations per second. Is there any other particular basis for
> considering it "right"?
I think this is getting off-topic, so extended discussion should
probably go off-list. But the brief answer is that it gives a physically
meaningful result if you replace each of the data points with the mean.
Which specific mean you use depends on how you are using the data
points.
http://mathforum.org/library/drmath/view/69480.html
Consider the question:
Dave can paint a room in 5 hours, and Sue can paint the same room in 3
hours. How long will it take them, working together, to paint the room?
The right answer can be found the long way:
Dave paints 1/5 of a room per hour, and Sue paints 1/3 of a room per
hour, so together they paint (1/5+1/3) = 8/15 of a room per hour. So to
paint one full room, it takes 15/8 = 1.875 hours.
(Sanity check: after 1.875 hours, Sue has painted 1.875/3 of the room,
or 62.5%. In that same time, Dave has painted 1.875/5 of the room, or
37.5%. Add the percentages together, and you have 100% of the room.)
Using the harmonic mean, the problem is simple:
data = 5, 3 # time taken per person
mean = 3.75 # time taken per person on average
Since they are painting the room in parallel, each person need only
paint half the room on average, giving total time of:
3.75/2 = 1.875 hours
If we were to use the arithmetic mean (5+3)/2 = 4 hours, we'd get the
wrong answer.
--
Steve
More information about the Python-Dev
mailing list