Speed up GOD processing
has_key
is not only deprecated in python 3, but it is also slower:
% python -mtimeit -s'd=dict.fromkeys(range(99))' '12 in d'
10000000 loops, best of 3: 0.0342 usec per loop
% python -mtimeit -s'd=dict.fromkeys(range(99))' 'd.has_key(12)'
10000000 loops, best of 3: 0.0657 usec per loop
% python -mtimeit -s'd=dict.fromkeys(range(9999))' '12 in d'
10000000 loops, best of 3: 0.0346 usec per loop
% python -mtimeit -s'd=dict.fromkeys(range(9999))' 'd.has_key(12)'
10000000 loops, best of 3: 0.0661 usec per loop
As a result, this commit replaces every d.has_key(k)
with k in d
.
In addition, constructions like
if d.has_key(k):
for i in d[k]:
are replaced with:
for i in d.get(k,[])
For a full re-build of LHCb, this seems to save more than 10% of the total build time on our local cluster
Edited by Marco Cattaneo