回复:PEP 372——向集合添加有序目录

dbpoko ...:
我现在认为我们可以创建可能的odict用法列表,因为我
认为尽管每个人都用于不同目的,我们可能会
查找其用法的一些主要组.我使用odict是
dict几乎是正确的数据结构,因此保持所有操作
接近DICS的时间复杂性具有目的.
在Python 2.5中,dict(int:none)大约需要36.2字节/元素.我是
建议添加2个指针,以创建一个链接列表,因此可能
变为(在32位系统上)约44.2个字节/对.
请注意,计算机科学充满了奇怪的数据结构,因此
也许可以在这里使用跳过列表,以增加一些操作
时间,减少其他时间... :-)
再见,

# 回答1


在6月18日,下午3:15,bearophileh ...@lycos.com写道:
pydictentry是
typedef struct {
py_ssize_t me_hash;
pyObject *me_key;
pyObject *me_value;
} pydictentry;
在32位机器上应该是12个字节.我认为有空间
DICS的生长因子约为12%,但实际上是100%.在任何
案例,一对列表将占用比dict和列表更少的空间.
否则存储可能是pydictentrys的数组(用于缓存哈希
键的值),在某种意义上是在某种意义上的方法
其他.
最后一种方法有一个优点 - 我认为
在dictobject.c上进行黑客攻击,必须发生的c是最小的.在
事实,似乎您可以通过设置获得理想的结果
mp-> ma_lookup到一个新功能(并保留其余的大部分
方法是).虽然这似乎太容易了,所以可能有一个
抓住.
大卫
# 回答2


dbpoko ...:
(请在我的上一篇文章中忽略我的电话号码中的尾随" .2"
精度很愚蠢).
我的内存价值来自实验,我创建了一点
这样的程序:
从内存导入内存
def main(n):
m1 = memory()
打印M1
d = {}
因为我在Xrange(n)中:
D [i] =无
m2 = memory()
打印M2
打印浮子((M2 -M1) * 1024) / N
Main(20000000)
记忆是我的一个小模块,称为鲜为人知
程序告诉当前python使用了多少内存
过程.该运行n = 20000000的结果是(前两个数字
是千字节,第三个数字是字节/对):
1876年
633932
32.3612672
这意味着存储20_000_000对,大约需要647_000_000
字节,python 2.5.2,获胜.
再见,
bearophile
# 回答3

bedeydebeyde theidge@lycos.com写道:
如果您更改输出以将整数排除在外,您会得到什么
内存计算,所以您只查看字典
元素本身?例如
def main(n):
键=范围(n)
m1 = memory()
打印M1
d = {}
因为我在钥匙中:
D [i] =无
m2 = memory()
打印M2
打印浮子((M2 -M1) * 1024) / N
Main(20000000)
- -
Duncan Booth http://kupuguy.blogspot.com
# 回答4


邓肯·布斯:
结果:
318512(kbytes)
712124(kbytes)
20.1529344(字节)
再见,

标签: python

添加新评论