Python 这是一个合理的基准吗

Python 这是一个合理的基准吗,python,Python,我在查看一些代码时遇到了一个dict的用法,这个用法可以很容易地用tuple来实现——在我一般认为tuple很快的假设下,我使用了timeit模块来找出答案。我不太了解Python的内部结构,所以我想知道下面的内容是否是一个合理的基准 import timeit setup_tuples = ''' mapping = ( ('a', ('b', 'c')), ('d', ('e', 'f')), ('g', ('h', 'i')), ) ''' script_tu

我在查看一些代码时遇到了一个
dict
的用法,这个用法可以很容易地用
tuple
来实现——在我一般认为
tuple
很快的假设下,我使用了
timeit
模块来找出答案。我不太了解Python的内部结构,所以我想知道下面的内容是否是一个合理的基准

import timeit


setup_tuples = '''
mapping = (
    ('a', ('b', 'c')),
    ('d', ('e', 'f')),
    ('g', ('h', 'i')),
)
'''

script_tuples = '''
for key, (db_access_fn_name, post_db_fn) in mapping:
    pass
'''

setup_dict = '''
mapping = {
    'a': ('b', 'c'),
    'd': ('e', 'f'),
    'g': ('h', 'i'),
}
'''

script_dict = '''
for key, (db_access_fn_name, post_db_fn) in mapping.items():
    pass
'''

print('tuples')
print(timeit.timeit(script_tuples, setup_tuples))

print('a dict')
print(timeit.timeit(script_dict, setup_dict))

用3把钥匙?它将变得有趣,可能有3000甚至300000个循环;这种优化可能会有明显的副作用,因为被迭代的对象处于不同的状态。该语言的语法确实要求循环体中至少有一条语句,但如果您无事可做,则通常是
pass
。>3个键@美元。我的使用需要三个键。在这种情况下(数据很好地代表了您在现实世界中的使用,包括在大小方面),dict的开销可能过大,基准测试是合理的。如果您需要随着大小的增加而进行固定时间的键查找,那么dict将具有竞争力,但如果它们不会增加…也就是说,我建议您记住,有时可读性比性能更重要:通常,程序员的时间比机器的时间更贵,特别是如果此代码实际运行的频率不足以使这些计时变得相关。