Python 是解释型语言,而非编译型语言,对 for 循环会有比较大的时间开销。这里不讨论 Python 的底层原理,将直接给出代码测试 Python的 for 循环的计算时间,用于之后做其他计算时的数值参考。
Python 测试代码:
import time
start_time = time.time()
for _ in range(10**8):
pass
end_time = time.time()
print(end_time-start_time)
start_time = time.time()
for _ in range(10**6):
for _ in range(10**2):
pass
end_time = time.time()
print(end_time-start_time)
start_time = time.time()
for _ in range(10**4):
for _ in range(10**2):
for _ in range(10**2):
pass
end_time = time.time()
print(end_time-start_time)
print('---')
for num in range(11):
times = 10**num
start_time = time.time()
for _ in range(times):
pass
end_time = time.time()
print(f'10^{num}: {end_time-start_time}')
运行结果:
2.2707338333129883
1.6098830699920654
1.5754427909851074
---
10^0: 1.1920928955078125e-06
10^1: 1.6689300537109375e-06
10^2: 2.1457672119140625e-06
10^3: 2.1219253540039062e-05
10^4: 0.00021266937255859375
10^5: 0.0023064613342285156
10^6: 0.022001028060913086
10^7: 0.221541166305542
10^8: 2.4560723304748535
10^9: 33.21372199058533
10^10: 781.5104327201843
大致结论:当总的循环次数超过 10^10 次,即超过 100 亿时,这时候可以考虑对代码进行优化,例如使用 Numba、Cython 等工具,或者将 Python 代码改写成其他更高效的编程语言。
其他博文参考:
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】