len(List)的性能与读取变量

len(List)的性能与读取变量,第1张

len(List)的性能与读取变量

几个结果(一百万次呼叫的时间,以秒为单位),并在Windows 7上使用Python
2.7.10列出了十个元素;

store
是存储长度还是继续调用
len
alias
是否为
len
以下项创建本地别名

Store Alias n=      1      10     100Yes   Yes       0.862   1.379   6.669Yes   No        0.792   1.337   6.543No    Yes       0.914   1.924  11.616No    No        0.879   1.987  12.617

和一千个元素的列表:

Store Alias n=      1      10     100Yes   Yes       0.877   1.369   6.661Yes   No        0.785   1.299   6.808No    Yes       0.926   1.886  11.720No    No        0.891   1.948  12.843

结论:

  • 存储结果比
    len
    重复调用(甚至是)更有效
    n == 1
  • 为不创建结果的本地别名
    len
    可以对较大的
    n
    地方进行较小的改进,因为我们不存储结果,但不如仅存储结果那样多。和
  • 列表长度的影响可以忽略不计,这表明是否对整数进行了intern没有任何区别。

测试脚本:

def test(n, l, store, alias):    if alias:        len_ = len        len_l = len_(l)    else:        len_l = len(l)    for _ in range(n):        if store: _ = len_l        elif alias: _ = len_(l)        else: _ = len(l)if __name__ == '__main__':    from itertools import product    from timeit import timeit    setup = 'from __main__ import test, l'    for n, l, store, alias in product(        (1, 10, 100),        ([None]*10,),        (True, False),        (True, False),    ):        test_case = 'test({!r}, l, {!r}, {!r})'.format(n, store, alias)        print test_case, len(l),        print timeit(test_case, setup=setup)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5663714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存