擅长:python、mysql、java
<p>在另一个答案中加上这个,因为它是一个:</p>
<p>如果你想要比给出的“手动”方法更快的东西,总是有Numpy:</p>
<pre><code>import numpy
def bxor_numpy(b1, b2):
n_b1 = numpy.fromstring(b1, dtype='uint8')
n_b2 = numpy.fromstring(b2, dtype='uint8')
return (n_b1 ^ n_b2).tostring()
</code></pre>
<p>而且速度很快:</p>
<pre><code>first_random = urandom(100000)
second_random = urandom(100000)
min(Timer(partial(bxor_inplace, first_random, second_random)).repeat(10, 100))
#>>> 1.5381054869794752
min(Timer(partial(bxor_append, first_random, second_random)).repeat(10, 100))
#>>> 1.5624085619929247
min(Timer(partial(bxor_numpy, first_random, second_random)).repeat(10, 100))
#>>> 0.009930026979418471
</code></pre>
<p>所以它比这里公布的最佳替代方案快150倍。</p>