Python快速单色位图

时间:2011-01-09 01:31:01

标签: python bitmap performance

我想实现1024x1024单色网格,我需要从任何单元格读取数据并插入各种尺寸的矩形,我已经尝试在列表中创建列表(并使用它像2d数组),我发现的是那个列表布尔值比整数列表慢......我已经尝试过1d列表,它比2d慢,numpy比标准python列表慢10倍,我找到的最快方式是PIL和单色位图用于“加载“方法,但我希望它运行得更快,所以我试图用shedskin编译它,但遗憾的是那里没有支持,你知道如何更快地实现这样的网格而不将其重写为c或c ++ ?

3 个答案:

答案 0 :(得分:2)

Raph建议使用数组是好的,但它对CPython没有帮助,事实上我预计它会慢10-15%,但是如果你在PyPy上使用它(http://pypy.org) /)我期待很好的结果。

答案 1 :(得分:0)

我可能建议使用Python的内置数组类(http://docs.python.org/library/array.html),类型为“B”。如果你每个像素使用一个字节,编码将是最简单的,但如果你想节省内存,你可以打包8到一个字节,并使用你自己的位操作访问。

答案 2 :(得分:0)

我会研究Cython将Python翻译成易于编译的C(如果使用distutils则为你编译)。只是在Cython中编译你的代码会使这样的事情变得更快,但你可以通过添加一些cdef语句来获得更大的加速。如果您use it with Numpy,那么您可以快速访问Numpy阵列。通过以这种方式使用Cython,加速可以非常大。但是,如果您提供了一些示例代码,则会更容易为您提供帮助。