Message75224
Comparing _heapq with our own legacy C implementation, blue.heapq at
CCP, I noticed that ours was somewhat faster.
I discovered that a lot of effort is being spent to dynamically search
for a __lt__ operator, to provide backwards compatibility. I think we
should consider dropping that after this much time, especially for a
new python version. Running this code:
from timeit import *
s = """
import heapq
import random
l = [random.random() for i in xrange(10000)]
"""
print "heapify", Timer("heapq.heapify(list(l))", s).timeit(100)
s = s + """
heapq.heapify(l)
"""
print "pushpop", Timer("heapq.heappushpop(l,random.random())", s).timeit
(500000)
would give
heapify 0.289102944648
pushpop 0.343299078514
before. After the patch, we get:
heapify 0.0958507994731
pushpop 0.220800967721
This is "release" code on a snappy windows machine. |
|
Date |
User |
Action |
Args |
2008-10-26 11:53:07 | kristjan.jonsson | set | recipients:
+ kristjan.jonsson |
2008-10-26 11:53:07 | kristjan.jonsson | set | messageid: <1225021987.36.0.560633277086.issue4207@psf.upfronthosting.co.za> |
2008-10-26 11:53:05 | kristjan.jonsson | link | issue4207 messages |
2008-10-26 11:53:04 | kristjan.jonsson | create | |
|