From b968f83e8bebbe909da447ba46791be67d7ebb24 Mon Sep 17 00:00:00 2001 From: nyuszika7h Date: Tue, 30 Jun 2015 20:35:39 +0200 Subject: [PATCH] Optimize var.get_role It will now return as soon as it finds the role for the player, instead of calling var.list_players_and_roles every single time. I haven't tested in a real-world scenario, but in a test game with 10000 players (don't ask), the speed improvement is very clear (~1-2s per player when sending out nighttime PMs instead of ~10s). --- src/settings.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/settings.py b/src/settings.py index fdd464a..bd662a3 100644 --- a/src/settings.py +++ b/src/settings.py @@ -345,7 +345,12 @@ def list_players_and_roles(): plr[p] = x return plr -get_role = lambda plyr: list_players_and_roles()[plyr] +def get_role(p): + for role, pl in ROLES.items(): + if role in TEMPLATE_RESTRICTIONS.keys(): + continue # only get actual roles + if p in pl: + return role def get_reveal_role(nick): if HIDDEN_TRAITOR and get_role(nick) == "traitor":