HNHacker News
TopNewBestAskShowJobs

gaelenh

56 karma · joined October 25, 2011

Email me at gaelenh@gmail.com

[ my public key: https://keybase.io/gaelen; my proof: https://keybase.io/gaelen/sigs/KOhdnyt7c6BQxrEIIn2LezEGKTuXUef_RWyUxEPlrNo ]

submissionscomments
gaelenh··on Moka - Minimalist functional python library
I like the idea, but there seems to be a bit of a performance hit.

>>> from timeit import Timer

>>> mokatimer = Timer("l = List(range(1000)).extend(range(1000, 2000)).keep(lambda x: (x % 3) == 1)", setup="from moka import List")

>>> regtimer = Timer("l = range(1000); l.extend(range(1000, 2000)); l = [n for n in l if (n % 3) == 1]")

>>> mokatimer.timeit(10000)

16.502125024795532

>>> regtimer.timeit(10000)

2.5419421195983887

I tried pre-generating the range to see if that was throwing it off the timer:

>>> regtimer = Timer("l = []; l.extend(range1000); l = [n for n in l if (n % 3) == 1]", setup="range1000 = range(1000)")

>>> mokatimer = Timer("l = List().extend(range1000).keep(lambda x: (x % 3) == 1)", setup="from moka import List; range1000=range(1000)")

>>> regtimer.timeit(10000)

1.0892798900604248

>>> mokatimer.timeit(10000)

7.714169979095459

I didn't look at the source, but it looks like moka needs to be optimized to use list comprehension for .keep. Other methods could probably use comprehension (or generators) too.

← PreviousPage 2 of 2