From 3ae5a9bfb762eaa2538a204e7d3b90c8c392bf51 Mon Sep 17 00:00:00 2001 From: Tomas Kopecek Date: Jul 12 2018 10:40:43 +0000 Subject: few sort speedups Fixes: https://pagure.io/koji/issue/963 --- diff --git a/hub/kojihub.py b/hub/kojihub.py index 22dd484..2f4bd61 100644 --- a/hub/kojihub.py +++ b/hub/kojihub.py @@ -2239,7 +2239,7 @@ def get_task_descendents(task, childMap=None, request=False): if childMap == None: childMap = {} children = task.getChildren(request=request) - children.sort(lambda a, b: cmp(a['id'], b['id'])) + children.sort(key=lambda x: x['id']) # xmlrpclib requires dict keys to be strings childMap[str(task.id)] = children for child in children: @@ -8006,9 +8006,7 @@ def _applyQueryOpts(results, queryOpts): if order.startswith('-'): order = order[1:] reverse = True - results.sort(key=lambda o: o[order]) - if reverse: - results.reverse() + results.sort(key=lambda o: o[order], reverse=reverse) if queryOpts.get('offset'): results = results[queryOpts['offset']:] if queryOpts.get('limit'): diff --git a/koji/tasks.py b/koji/tasks.py index 84cc8d2..4e1fa12 100644 --- a/koji/tasks.py +++ b/koji/tasks.py @@ -50,8 +50,7 @@ def scan_mounts(topdir): mplist.append(path) fo.close() #reverse sort so deeper dirs come first - mplist.sort() - mplist.reverse() + mplist.sort(reverse=True) return mplist def umount_all(topdir): diff --git a/plugins/hub/protonmsg.py b/plugins/hub/protonmsg.py index 3de56fc..7a21ace 100644 --- a/plugins/hub/protonmsg.py +++ b/plugins/hub/protonmsg.py @@ -283,7 +283,8 @@ def send_queued_msgs(cbtype, *args, **kws): for msg in msgs: log.debug('test mode: skipped msg: %r', msg) return - for url in sorted(urls, key=lambda k: random.random()): + random.shuffle(urls) + for url in urls: container = Container(TimeoutHandler(url, msgs, CONFIG)) container.run() if msgs: diff --git a/util/koji-shadow b/util/koji-shadow index ec079f4..ee93e13 100755 --- a/util/koji-shadow +++ b/util/koji-shadow @@ -1154,8 +1154,7 @@ class BuildTracker(object): problem_counts[nvr] += 1 order = [(c, nvr) for (nvr, c) in six.iteritems(problem_counts)] if order: - order.sort() - order.reverse() + order.sort(reverse=True) #print top 5 problems log("-- top problems --") for (c, nvr) in order[:5]: diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py index cd38245..39c6188 100644 --- a/www/kojiweb/index.py +++ b/www/kojiweb/index.py @@ -688,7 +688,7 @@ def taskinfo(environ, taskID): paths = [] # (volume, relpath) tuples for relname, volumes in six.iteritems(server.listTaskOutput(task['id'], all_volumes=True)): paths += [(volume, relname) for volume in volumes] - values['output'] = sorted(paths, key = _sortByExtAndName) + values['output'] = sorted(paths, key=_sortByExtAndName) if environ['koji.currentUser']: values['perms'] = server.getUserPerms(environ['koji.currentUser']['id']) else: