從http://www.cs.bell-labs.com/cm/cs/pearls/sol01.html:如何使用python構建一個int arrray和manuplate它與C一樣高效?
C代碼是這樣的:
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 10000000
int a[1 + N/BITSPERWORD];
void set(int i) { a[i>>SHIFT] |= (1<<(i & MASK)); }
void clr(int i) { a[i>>SHIFT] &= ~(1<<(i & MASK)); }
int test(int i){ return a[i>>SHIFT] & (1<<(i & MASK)); }
我發現ctypes,BitArrays,numpy但我不知道他們是否可以像上面的C代碼一樣高效。
例如,如果我寫這樣的代碼:
from ctypes import c_int
a=[c_int(9)]*1024*1024
會使用的空間1M字節,或者更多?
有誰知道一些好的庫,可以在Python中做同樣的事情嗎?
什麼是您認爲當前實現效率不高你的使用情況? – 2012-08-15 18:25:33
@BurhanKhalid我爲這個問題增加了更多的描述,'a = [c_int(9)] * 1024 * 1024'會使用多於'1M Bytes'嗎? – 2012-08-15 18:29:06
澄清:當你說「高效」時,你的意思是什麼?你想最大限度地減少壁掛時間,最小化CPU時間,最大限度地減少內存使用,或者不同的東西? – 2012-08-15 18:29:39