作者klain (klain)
看板Python
标题[问题] 一个整数变数的大小
时间Thu Jan 17 10:44:15 2013
我有个整数变数, 我想知道他在记忆体里面占了多少空间
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
1F:推 mars90226:len只是回传长度吧,repr是回传物件的字串表达 01/17 11:24
2F:→ mars90226:所以你看到的1是'1'的长度,303是2**1000转成字串的长度 01/17 11:25
3F:→ mars90226:这跟他所占用的记忆体没有关联 01/17 11:25
4F:→ swpoker:像python这种的~是不会让你也没有必要让你知道这种细节的 01/17 11:29
5F:→ klain:因为我必须要计算我的程式花了多少记忆体空间, 01/17 11:38
6F:→ klain:所以如果我硬是要知道呢? 是否有什麽物件或是函式可以呼叫? 01/17 11:38
7F:推 SansWord:跟你用的机器也有关系吧。 01/17 12:03
8F:→ yuxio:用 shift 做乘2或除2的概念是一样的 01/17 12:32
9F:推 FreedomMax:我觉得最好开工作管理员看,他的GC你也不知道做了没 01/17 12:34
10F:推 mikapauli:(1).__sizeof__() 这样? 01/17 13:57
12F:→ uranusjr:这样做也不会让你知道你了多少记忆体啊, 还要把直译器的 01/17 23:52
13F:→ uranusjr:空间算进去, 可是除非你自己刻一个不然你要怎麽算直译器 01/17 23:52
14F:→ uranusjr:有哪些有多少记忆体是用在你的 script 上面!? 01/17 23:53
15F:→ uranusjr:如果你是想知道效能, 直接找现成的 profiler 比较有意义 01/17 23:54