Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 68d228f

Browse files
scoderrhettinger
authored andcommittedMar 25, 2019
bpo-35884: Add string-keys-only microbenchmark for dict access to var_access_benchmark.py (pythonGH-11905)
1 parent 5e33378 commit 68d228f

File tree

1 file changed

+28
-12
lines changed

1 file changed

+28
-12
lines changed
 

‎Tools/scripts/var_access_benchmark.py

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -196,23 +196,31 @@ def read_dict(trials=trials, a={0: 1}):
196196
a[0]; a[0]; a[0]; a[0]; a[0]
197197
a[0]; a[0]; a[0]; a[0]; a[0]
198198

199+
def read_strdict(trials=trials, a={'key': 1}):
200+
for t in trials:
201+
a['key']; a['key']; a['key']; a['key']; a['key']
202+
a['key']; a['key']; a['key']; a['key']; a['key']
203+
a['key']; a['key']; a['key']; a['key']; a['key']
204+
a['key']; a['key']; a['key']; a['key']; a['key']
205+
a['key']; a['key']; a['key']; a['key']; a['key']
206+
199207
def list_append_pop(trials=trials, a=[1]):
200208
ap, pop = a.append, a.pop
201209
for t in trials:
202-
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop();
203-
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop();
204-
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop();
205-
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop();
206-
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop();
210+
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop()
211+
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop()
212+
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop()
213+
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop()
214+
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop()
207215

208216
def deque_append_pop(trials=trials, a=deque([1])):
209217
ap, pop = a.append, a.pop
210218
for t in trials:
211-
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop();
212-
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop();
213-
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop();
214-
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop();
215-
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop();
219+
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop()
220+
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop()
221+
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop()
222+
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop()
223+
ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop(); ap(1); pop()
216224

217225
def deque_append_popleft(trials=trials, a=deque([1])):
218226
ap, pop = a.append, a.popleft
@@ -247,6 +255,14 @@ def write_dict(trials=trials, a={0: 1}):
247255
a[0]=1; a[0]=1; a[0]=1; a[0]=1; a[0]=1
248256
a[0]=1; a[0]=1; a[0]=1; a[0]=1; a[0]=1
249257

258+
def write_strdict(trials=trials, a={'key': 1}):
259+
for t in trials:
260+
a['key']=1; a['key']=1; a['key']=1; a['key']=1; a['key']=1
261+
a['key']=1; a['key']=1; a['key']=1; a['key']=1; a['key']=1
262+
a['key']=1; a['key']=1; a['key']=1; a['key']=1; a['key']=1
263+
a['key']=1; a['key']=1; a['key']=1; a['key']=1; a['key']=1
264+
a['key']=1; a['key']=1; a['key']=1; a['key']=1; a['key']=1
265+
250266
def loop_overhead(trials=trials):
251267
for t in trials:
252268
pass
@@ -266,9 +282,9 @@ def loop_overhead(trials=trials):
266282
write_local, write_nonlocal, write_global,
267283
write_classvar, write_instancevar, write_instancevar_slots,
268284
'\nData structure read access:',
269-
read_list, read_deque, read_dict,
285+
read_list, read_deque, read_dict, read_strdict,
270286
'\nData structure write access:',
271-
write_list, write_deque, write_dict,
287+
write_list, write_deque, write_dict, write_strdict,
272288
'\nStack (or queue) operations:',
273289
list_append_pop, deque_append_pop, deque_append_popleft,
274290
'\nTiming loop overhead:',

0 commit comments

Comments
 (0)
Please sign in to comment.