Update PR #3384's CHANGE.txt entry to include a note about the changed behavior
[scons.git] / bench / lvars-gvars.py
blob151120386d65da077907f1925569d2d8201c498a
1 # __COPYRIGHT__
3 # Functions and data for timing different idioms for fetching a keyword
4 # value from a pair of dictionaries for localand global values. This was
5 # used to select how to most efficiently expand single $KEYWORD strings
6 # in src/engine/SCons/Subst.py.
8 def Func1(var, gvars, lvars):
9 """lvars try:-except:, gvars try:-except:"""
10 for i in IterationList:
11 try:
12 x = lvars[var]
13 except KeyError:
14 try:
15 x = gvars[var]
16 except KeyError:
17 x = ''
19 def Func2(var, gvars, lvars):
20 """lvars has_key(), gvars try:-except:"""
21 for i in IterationList:
22 if var in lvars:
23 x = lvars[var]
24 else:
25 try:
26 x = gvars[var]
27 except KeyError:
28 x = ''
30 def Func3(var, gvars, lvars):
31 """lvars has_key(), gvars has_key()"""
32 for i in IterationList:
33 if var in lvars:
34 x = lvars[var]
35 elif var in gvars:
36 x = gvars[var]
37 else:
38 x = ''
40 def Func4(var, gvars, lvars):
41 """eval()"""
42 for i in IterationList:
43 try:
44 x = eval(var, gvars, lvars)
45 except NameError:
46 x = ''
48 def Func5(var, gvars, lvars):
49 """Chained get with default values"""
50 for i in IterationList:
51 x = lvars.get(var,gvars.get(var,''))
54 # Data to pass to the functions on each run. Each entry is a
55 # three-element tuple:
57 # (
58 # "Label to print describing this data run",
59 # ('positional', 'arguments'),
60 # {'keyword' : 'arguments'},
61 # ),
63 Data = [
65 "Neither in gvars or lvars",
66 ('x', {}, {}),
67 {},
70 "Missing from lvars, found in gvars",
71 ('x', {'x':1}, {}),
72 {},
75 "Found in lvars",
76 ('x', {'x':1}, {'x':2}),
77 {},
81 # Local Variables:
82 # tab-width:4
83 # indent-tabs-mode:nil
84 # End:
85 # vim: set expandtab tabstop=4 shiftwidth=4: