commit 104fbe7952357ef78b8932b38603ef38fb3dcfab Author: Matt Traudt sirmatt@ksu.edu Date: Fri Jun 22 09:19:13 2018 -0400
Make RelayPrioritizer much faster by using sets
GH: closes #204 --- CHANGELOG.md | 6 ++++++ sbws/lib/relayprioritizer.py | 5 ++--- 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f9eb22..5026290 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Maintenance script to help us find functions that are (probably) no longer being called.
+### Fixed + +- Make relay priority calculations take only ~5% of the time they used to (3s + vs 60s) by using sets instead of lists when selecting non-Authority relays. +(GH#204) + ### Changed
- Change the path where the Bandwidth List files are generated: now they are diff --git a/sbws/lib/relayprioritizer.py b/sbws/lib/relayprioritizer.py index a705213..3a635f0 100644 --- a/sbws/lib/relayprioritizer.py +++ b/sbws/lib/relayprioritizer.py @@ -46,10 +46,9 @@ class RelayPrioritizer: measurement. ''' fn_tstart = Decimal(time.time()) - relays = copy.deepcopy(self.relay_list.relays) + relays = set(copy.deepcopy(self.relay_list.relays)) if not self.measure_authorities: - relays = [r for r in relays - if r not in self.relay_list.authorities] + relays = relays.difference(set(self.relay_list.authorities)) rd = self.result_dump for relay in relays: results = rd.results_for_relay(relay)