Задача:
Выполнить побитовое 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)