Steven D'Aprano <[email protected]> added the comment:
> On my current 3.8 build, this code given an approx 500x speed-up
On my system, I only get a 30x speed-up using your timeit code. Using
ints instead of random floats, I only get a 9x speed-up.
This just goes to show how sensitive these timing results are on
platform and hardware.
What do you think of this implementation?
def floatmean(data:Iterable) -> Float:
try:
n = len(data)
except TypeError:
# Handle iterators with no len.
n = 0
def count(x):
nonlocal n
n += 1
return x
total = math.fsum(map(count, data))
return total/n
else:
return math.fsum(data)/n
Compared to the "no frills" fsum()/len() version:
- I see no visible slowdown on lists of floats;
- it handles iterators as well.
On my computer, the difference between the sequence path and the
iterator path is just a factor of 3.5. How does it compare on other
machines?
As for the name, I think we have three reasonable candidates:
float_mean
fast_mean
fmean
(with or without underscores for the first two). Do people have a
preference?
----------
title: Add statistics.fastmean(seq) -> Add statistics.fmean(seq)
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue35904>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com