相关疑难解决方法(0)

简单的Python挑战:数据缓冲区中最快的按位异或

挑战:

在两个大小相等的缓冲区上执行按位XOR.缓冲区将需要是python str类型,因为传统上它是python中数据缓冲区的类型.将结果值作为a返回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)
Run Code Online (Sandbox Code Playgroud)

python algorithm performance xor

51
推荐指数
7
解决办法
2万
查看次数

Cython Speed Boost与可用性

我刚遇到Cython,而我正在寻找优化Python代码的方法.我在stackoverflow,python wiki上阅读了各种帖子,并阅读了文章"优化的一般规则".

Cython是最能引起我兴趣的东西; 而不是为自己编写C代码,您可以选择在python代码本身中使用其他数据类型.

这是我试过的一个愚蠢的测试,

#!/usr/bin/python
# test.pyx
def test(value):
    for i in xrange(value):
    i**2
    if(i==1000000):
        print i

test(10000001)
Run Code Online (Sandbox Code Playgroud)

$ time python test.pyx

real    0m16.774s 
user    0m16.745s
sys     0m0.024s
Run Code Online (Sandbox Code Playgroud)

$ time cython test.pyx

real    0m0.513s 
user    0m0.196s 
sys     0m0.052s
Run Code Online (Sandbox Code Playgroud)

现在,老实说,我傻眼了.我在这里使用的代码是纯python代码,我所有改变的是解释器.在这种情况下,如果cython这样好,那么为什么人们仍然使用传统的Python解释器呢?Cython有任何可靠性问题吗?

python performance cython

42
推荐指数
4
解决办法
3万
查看次数

标签 统计

performance ×2

python ×2

algorithm ×1

cython ×1

xor ×1