首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python :大小影响时间?

Python :大小影响时间?
EN

Stack Overflow用户
提问于 2016-02-24 01:34:10
回答 1查看 100关注 0票数 2

假设您在字典A中有一个键,而在字典B中有10亿个键

算法上,查找op是O(1)

然而,实际的时间(程序执行时间)查找不同大小的dict?

代码语言:javascript
复制
onekey_stime = time.time()
print one_key_dict.get('firstkey')
onekey_dur = time.time() - onekey_stime

manykeys_stime = time.time()
print manykeys_dict.get('randomkey')
manykeys_dur = time.time() - manykey_stime

我能看到onekey_durmanykeys_dur之间的时间差吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-24 02:01:58

在一个小的和大的数据集的测试中,几乎完全相同:

代码语言:javascript
复制
In [31]: random_key = lambda: ''.join(np.random.choice(list(string.ascii_letters), 20))

In [32]: few_keys = {random_key(): np.random.random() for _ in xrange(100)}

In [33]: many_keys = {random_key(): np.random.random() for _ in xrange(1000000)}

In [34]: few_lookups = np.random.choice(few_keys.keys(), 50)

In [35]: many_lookups = np.random.choice(many_keys.keys(), 50)

In [36]: %timeit [few_keys[k] for k in few_lookups]
100000 loops, best of 3: 6.25 µs per loop

In [37]: %timeit [many_keys[k] for k in many_lookups]
100000 loops, best of 3: 7.01 µs per loop

编辑:对你来说,@阴影护林员--错过查找也很近:

代码语言:javascript
复制
In [38]: %timeit [few_keys.get(k) for k in many_lookups]
100000 loops, best of 3: 7.99 µs per loop

In [39]: %timeit [many_keys.get(k) for k in few_lookups]
100000 loops, best of 3: 8.78 µs per loop
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35591668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档