Skip to content

Commit c5a2d5a

Browse files
committed
Apply shims to sortedcollection for benchmarking
1 parent 11029c4 commit c5a2d5a

File tree

3 files changed

+30
-29
lines changed

3 files changed

+30
-29
lines changed

README.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Python Sorted Containers
44
.. todo::
55

66
* Add __delitem__ to sorted dict views?
7+
* SortedKeyList uses identity function (shows overhead)
78
* Document migrating bintrees insert to soco
89
* Rename github repo
910
* Update coverage

tests/benchmark_sortedlist.py

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -119,33 +119,6 @@ def fill_values(obj, size):
119119

120120
try:
121121
from .sortedcollection import SortedCollection
122-
from bisect import bisect_left
123-
124-
SortedCollection.add = SortedCollection.insert
125-
126-
def update(self, iterable):
127-
for value in iterable:
128-
self.insert(value)
129-
SortedCollection.update = update
130-
131-
def bisect(self, item):
132-
key = self._key(item)
133-
pos = bisect_left(self._keys, key)
134-
return pos
135-
SortedCollection.bisect = bisect
136-
137-
def pop(self):
138-
self._keys.pop()
139-
return self._items.pop()
140-
SortedCollection.pop = pop
141-
142-
def discard(self, item):
143-
try:
144-
self.remove(item)
145-
except ValueError:
146-
pass
147-
SortedCollection.discard = discard
148-
149122
kinds['List'] = SortedCollection
150123
except ImportError:
151124
warnings.warn('No module named sortedcollection', ImportWarning)
@@ -204,7 +177,7 @@ def discard(self, item):
204177
'func': '__delitem__',
205178
'limit': 1000000
206179
}
207-
del impls['delitem']['List']
180+
limit('delitem', 'List', 10000)
208181

209182
for name, kind in kinds.items():
210183
impls['bisect'][name] = {
@@ -431,7 +404,7 @@ def run(self, value):
431404
'func': 'run',
432405
'limit': 1000000
433406
}
434-
del impls['intervals']['List']
407+
limit('intervals', 'List', 10000)
435408

436409
for name, kind in kinds.items():
437410
impls['init'][name] = {

tests/sortedcollection.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,33 @@ def find_gt(self, k):
199199
return self._items[i]
200200
raise ValueError('No item found with key above: %r' % (k,))
201201

202+
# GrantJ 05/16/18 -- Additions for benchmarking.
203+
204+
add = insert
205+
206+
def update(self, iterable):
207+
for value in iterable:
208+
self.insert(value)
209+
210+
def bisect(self, item):
211+
key = self._key(item)
212+
pos = bisect_left(self._keys, key)
213+
return pos
214+
215+
def pop(self):
216+
self._keys.pop()
217+
return self._items.pop()
218+
219+
def discard(self, item):
220+
try:
221+
self.remove(item)
222+
except ValueError:
223+
pass
224+
225+
def __delitem__(self, index):
226+
del self._keys[index]
227+
del self._items[index]
228+
202229

203230
# --------------------------- Simple demo and tests -------------------------
204231
if __name__ == '__main__':

0 commit comments

Comments
 (0)