栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

设置与冻结设置性能

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设置与冻结设置性能

frozenset
set
实现在很大程度上共享; a
set
只是一个
frozenset
添加了变异方法的a
,具有完全相同的哈希表实现。参见
Objects/setobject.c
源文件;
顶级
PyFrozenSet_Type
高清股与功能的
PySet_Type
定义。

这里没有针对冻结集的优化,因为

frozenset
测试成员资格时无需计算项目 的哈希值。用于
集合进行测试的项目仍需要计算其哈希值,以便在集合哈希表中找到正确的插槽,以便进行相等性测试。

因此,您的计时结果可能由于系统上正在运行其他进程而无法使用。您测量了时钟时间,没有禁用Python垃圾收集,也没有重复测试同一件事。

尝试使用

timeit
模块运行测试,其中一个来自
numbers
,一个不在集合中:

import randomimport sysimport timeitnumbers = [random.randrange(sys.maxsize) for _ in range(10000)]set_ = set(numbers)fset = frozenset(numbers)present = random.choice(numbers)notpresent = -1test = 'present in s; notpresent in s'settime = timeit.timeit(    test,    'from __main__ import set_ as s, present, notpresent')fsettime = timeit.timeit(    test,    'from __main__ import fset as s, present, notpresent')print('set      : {:.3f} seconds'.format(settime))print('frozenset: {:.3f} seconds'.format(fsettime))

这将每个测试重复一百万次,并产生:

set      : 0.050 secondsfrozenset: 0.050 seconds


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/652477.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号