From 57930976263b3a3146b9fe3ce838b3f2064a0df1 Mon Sep 17 00:00:00 2001 From: "Vgr E.Barry" Date: Fri, 31 Jul 2015 13:28:08 -0400 Subject: [PATCH] Improve var.break_long_message Concatenating strings repeatedly slows down the program and eats up memory. It's not too bad for the number of players we have, but if you get 10k players that makes a significant difference --- src/settings.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/settings.py b/src/settings.py index 2611d81..ba7d992 100644 --- a/src/settings.py +++ b/src/settings.py @@ -418,20 +418,20 @@ def role_order(): def break_long_message(phrases, joinstr = " "): - message = "" + message = [] count = 0 for phrase in phrases: # IRC max is 512, but freenode splits around 380ish, make 300 to have plenty of wiggle room if count + len(joinstr) + len(phrase) > 300: - message += "\n" + phrase - count = len(phrase) - elif message == "": - message = phrase + message.append("\n" + phrase) count = len(phrase) else: - message += joinstr + phrase - count += len(joinstr) + len(phrase) - return message + if message: + count = len(phrase) + else: + count += len(joinstr) + len(phrase) + message.append(phrase) + return joinstr.join(message) class InvalidModeException(Exception): pass def game_mode(name, minp, maxp, likelihood = 0, conceal_roles = False):