mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-26 01:23:56 +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:
parent
685807e3c4
commit
1c659ce615
@ -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')]
|
||||
|
@ -15,6 +15,7 @@ TESTCASES = [
|
||||
("deque+defaultdict+deque", PriorityQueue4),
|
||||
('list+deque', PriorityQueue5),
|
||||
('list+deque+cache', PriorityQueue6),
|
||||
('list+deque+cache+islice', PriorityQueue6b),
|
||||
]
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user