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)