1
0
mirror of https://github.com/scrapy/scrapy.git synced 2025-02-26 07:24:06 +00:00

profiling: add list+deque+cache+islice just to compare with pure slice

--HG--
extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40997
This commit is contained in:
Daniel Grana 2009-03-19 03:33:06 +00:00
parent 685807e3c4
commit 1c659ce615
2 changed files with 18 additions and 0 deletions

View File

@ -245,4 +245,21 @@ class PriorityQueue6(object):
return bool(len(self))
from itertools import islice
class PriorityQueue6b(PriorityQueue6):
"""Priority queue using a deque for priority 0"""
def pop(self):
cached = self.priolist[self.index]
if cached:
return (cached.pop(), self.index - self.zero)
for prio, queue in enumerate(islice(self.priolist, self.index, None), self.index):
if queue:
self.index = prio
return (queue.pop(), prio - self.zero)
raise IndexError("pop from an empty queue")
__all__ = [name for name in globals().keys() if name.startswith('PriorityQueue')]

View File

@ -15,6 +15,7 @@ TESTCASES = [
("deque+defaultdict+deque", PriorityQueue4),
('list+deque', PriorityQueue5),
('list+deque+cache', PriorityQueue6),
('list+deque+cache+islice', PriorityQueue6b),
]