From 2587d82af8d7a211f7685f0a8a7a198954650586 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Sat, 30 Jul 2016 00:14:54 +0100 Subject: Make util.XOR about ten times faster by calling bytes only once. --- slixmpp/util/misc_ops.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/slixmpp/util/misc_ops.py b/slixmpp/util/misc_ops.py index 2e661045..1dcd6e3f 100644 --- a/slixmpp/util/misc_ops.py +++ b/slixmpp/util/misc_ops.py @@ -1,3 +1,4 @@ +import builtins import sys import hashlib @@ -22,7 +23,6 @@ def bytes(text): if text is None: return b'' - import builtins if isinstance(text, builtins.bytes): # We already have bytes, so do nothing return text @@ -80,10 +80,9 @@ def XOR(x, y): :param bytes y: A byte string :rtype: bytes """ - result = b'' - for a, b in zip(x, y): - result += bytes([a ^ b]) - return result + # This operation is faster with a list comprehension than with a + # generator, as of 2016 on python 3.5. + return builtins.bytes([a ^ b for a, b in zip(x, y)]) def hash(name): -- cgit v1.2.3