From: Chris Porter Date: Fri, 19 Jun 2009 22:35:59 +0000 (+0100) Subject: Optimise buffer length code for very large buffers. X-Git-Url: https://jfr.im/git/irc/quakenet/qwebirc.git/commitdiff_plain/8932790b8d7986c19110e0813389700054d7c4be?ds=inline Optimise buffer length code for very large buffers. --- diff --git a/qwebirc/engines/ajaxengine.py b/qwebirc/engines/ajaxengine.py index 6b0bf45..0212e5a 100644 --- a/qwebirc/engines/ajaxengine.py +++ b/qwebirc/engines/ajaxengine.py @@ -52,6 +52,7 @@ class IRCSession: self.id = id self.subscriptions = [] self.buffer = [] + self.buflen = 0 self.throttle = 0 self.schedule = None self.closed = False @@ -106,7 +107,8 @@ class IRCSession: encdata = simplejson.dumps(self.buffer) self.buffer = [] - + self.buflen = 0 + newsubs = [] for x in self.subscriptions: if x.write(encdata): @@ -117,13 +119,14 @@ class IRCSession: cleanupSession(self.id) def event(self, data): - bufferlen = sum(map(len, self.buffer)) - if bufferlen + len(data) > config.MAXBUFLEN: + newbuflen = self.buflen + len(data) + if newbuflen > config.MAXBUFLEN: self.buffer = [] self.client.error("Buffer overflow.") return self.buffer.append(data) + self.buflen = newbuflen self.flush() def push(self, data):