Проблема:
Выполните побитовое XOR на двух буферах равного размера. Буферы должны быть типом python str
, поскольку это традиционно является типом буферов данных в python. Вернуть результирующее значение как str
. Сделайте это как можно быстрее.
Входы представляют собой две строки 1 мегабайт (2 ** 20 байт).
Задача состоит в том, чтобы существенно избить мой неэффективный алгоритм, используя python или существующие сторонние модули python (ослабленные правила: или создать свой собственный модуль.) Маргинальные увеличения бесполезны.
from os import urandom
from numpy import frombuffer,bitwise_xor,byte
def slow_xor(aa,bb):
a=frombuffer(aa,dtype=byte)
b=frombuffer(bb,dtype=byte)
c=bitwise_xor(a,b)
r=c.tostring()
return r
aa=urandom(2**20)
bb=urandom(2**20)
def test_it():
for x in xrange(1000):
slow_xor(aa,bb)