performance optimisation in hash merge logic

rewrite deepcopy in util.merge_hash and just iterate
on an inventory with 500 groups and 800 hosts this brings back the
inventory initialisation from 13s to 3s (with hash_behaviour=merge)
pull/6734/head
Serge van Ginderachter 11 years ago
parent d4634983f0
commit b0ff1ea425

@ -558,10 +558,11 @@ def merge_hash(a, b):
''' recursively merges hash b into a ''' recursively merges hash b into a
keys from b take precedence over keys from a ''' keys from b take precedence over keys from a '''
result = copy.deepcopy(a) result = {}
for dicts in a, b:
# next, iterate over b keys and values # next, iterate over b keys and values
for k, v in b.iteritems(): for k, v in dicts.iteritems():
# if there's already such key in a # if there's already such key in a
# and that key contains dict # and that key contains dict
if k in result and isinstance(result[k], dict): if k in result and isinstance(result[k], dict):

Loading…
Cancel
Save