在一个运行for固定range多次循环的 Python 程序中,例如,
while some_clause:
for i in range(0, 1000)
pass
...
Run Code Online (Sandbox Code Playgroud)
缓存是否有意义range:
r = range(0, 1000)
while some_clause:
for i in r
pass
...
Run Code Online (Sandbox Code Playgroud)
或者它不会增加多少好处?
它不会,一个range电话几乎没有任何作用。只有itering 部分不是可选的,有成本。
有趣的是,在下面的示例中,由于某种原因,缓存会使其变慢。
我的基准:
>>> timeit.timeit("""
for i in range(10000):
pass""",number=10000)
1.7728144999991855
>>> timeit.timeit("""
for i in r:
pass""","r=range(10000)",number=10000)
1.80037959999936
Run Code Online (Sandbox Code Playgroud)
缓存它会破坏可读性,正如 Python 之禅所说:
Readability counts.
Run Code Online (Sandbox Code Playgroud)
和
Explicit is better than implicit.
Simple is better than complex.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |