[問題] 一個整數變數的大小

看板Python作者 (klain)時間13年前 (2013/01/17 10:44), 編輯推噓4(4011)
留言15則, 9人參與, 最新討論串1/1
我有個整數變數, 我想知道他在記憶體裡面佔了多少空間 ex: x=1 我想知道x這個變數到底在記憶體佔了多少空間, 我目前是用: x=1 len(repr(x)) 但是我有兩個問題: 1. x轉成repr(x)這個字串的過程會不會在記憶體裡面有資料量增加或是減少 2. len(repr(x))的答案是1, 這個1的單位是什麼? 是1 Bytes嗎? 我最後是想要知道y=2**1000的記憶體佔用大小, 照上述用法的話, 就是: y=2**1000 len(repr(y)) 而答案會是303, 這是否代表y這個變數佔用了303 Bytes的記憶體空間呢? 另外, 正常在C/C++裡面, int資料型態就是把其2進位編碼寫進去記憶體內, 所以譬如某個整數變數要乘2的話可以用"向左shift 1個bit"來達到, 這裡也是同樣概念嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 71.167.153.152

01/17 11:24, , 1F
len只是回傳長度吧,repr是回傳物件的字串表達
01/17 11:24, 1F

01/17 11:25, , 2F
所以你看到的1是'1'的長度,303是2**1000轉成字串的長度
01/17 11:25, 2F

01/17 11:25, , 3F
這跟他所占用的記憶體沒有關聯
01/17 11:25, 3F

01/17 11:29, , 4F
像python這種的~是不會讓你也沒有必要讓你知道這種細節的
01/17 11:29, 4F

01/17 11:38, , 5F
因為我必須要計算我的程式花了多少記憶體空間,
01/17 11:38, 5F

01/17 11:38, , 6F
所以如果我硬是要知道呢? 是否有什麼物件或是函式可以呼叫?
01/17 11:38, 6F

01/17 12:03, , 7F
跟你用的機器也有關係吧。
01/17 12:03, 7F

01/17 12:32, , 8F
用 shift 做乘2或除2的概念是一樣的
01/17 12:32, 8F

01/17 12:34, , 9F
我覺得最好開工作管理員看,他的GC你也不知道做了沒
01/17 12:34, 9F

01/17 13:57, , 10F
(1).__sizeof__() 這樣?
01/17 13:57, 10F

01/17 18:49, , 11F

01/17 23:52, , 12F
這樣做也不會讓你知道你了多少記憶體啊, 還要把直譯器的
01/17 23:52, 12F

01/17 23:52, , 13F
空間算進去, 可是除非你自己刻一個不然你要怎麼算直譯器
01/17 23:52, 13F

01/17 23:53, , 14F
有哪些有多少記憶體是用在你的 script 上面!?
01/17 23:53, 14F

01/17 23:54, , 15F
如果你是想知道效能, 直接找現成的 profiler 比較有意義
01/17 23:54, 15F
文章代碼(AID): #1GzsM2Ig (Python)
文章代碼(AID): #1GzsM2Ig (Python)