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
This commit is contained in:
Vgr E.Barry 2015-07-31 13:28:08 -04:00
parent dc54fdc883
commit 5793097626

View File

@ -418,20 +418,20 @@ def role_order():
def break_long_message(phrases, joinstr = " "): def break_long_message(phrases, joinstr = " "):
message = "" message = []
count = 0 count = 0
for phrase in phrases: for phrase in phrases:
# IRC max is 512, but freenode splits around 380ish, make 300 to have plenty of wiggle room # IRC max is 512, but freenode splits around 380ish, make 300 to have plenty of wiggle room
if count + len(joinstr) + len(phrase) > 300: if count + len(joinstr) + len(phrase) > 300:
message += "\n" + phrase message.append("\n" + phrase)
count = len(phrase)
elif message == "":
message = phrase
count = len(phrase) count = len(phrase)
else: else:
message += joinstr + phrase if message:
count += len(joinstr) + len(phrase) count = len(phrase)
return message else:
count += len(joinstr) + len(phrase)
message.append(phrase)
return joinstr.join(message)
class InvalidModeException(Exception): pass class InvalidModeException(Exception): pass
def game_mode(name, minp, maxp, likelihood = 0, conceal_roles = False): def game_mode(name, minp, maxp, likelihood = 0, conceal_roles = False):