Proste wyzwanie Pythona: najszybszy bitowy XOR na buforach danych

Wyzwanie:

Wykonaj bitowy XOR na dwóch równych rozmiarach buforów. Bufory będą musiały być pytonamistr type, ponieważ tradycyjnie jest to typ buforów danych w pythonie. Zwraca wynikową wartość jako astr. Zrób to tak szybko, jak to możliwe.

Wejścia to dwa ciągi 1 megabajta (2 ** 20 bajtów).

Wyzwaniem jestw zasadzie pokonać mój nieefektywny algorytm za pomocą Pythona lub istniejących modułów python innych firm (luźne reguły: lub stworzyć własny moduł.) Marginesy są bezużyteczne.

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)

questionAnswers(11)

yourAnswerToTheQuestion