今天,何加我们将讨论Python中的表和优化技术。在本文中,字典您将了解如何通过避免在列表和字典中进行重新计算来加快代码的代码速度。
我们先编写一个装饰器函数来计算函数的更加高效执行时间,方便测验不同代码的何加速度:
import functools import time def timeit(func): @functools.wraps(func) def newfunc(*args, **kwargs): startTime = time.time() func(*args, **kwargs) elapsedTime = time.time() - startTime print(function - { }, took { } ms to complete.format(func.__name__, int(elapsedTime * 1000))) return newfunc在循环内
代码:
@timeit def append_inside_loop(limit): nums = [] for num in limit: nums.append(num) append_inside_loop(list(range(1, 9999999)))在上面的服务器租用函数中.append每次通过循环重新计算的函数引用。执行后,表和上述函数所花费的字典总时间:
o/p - function - append_inside_loop, took 529 ms to complete在循环外
代码:
@timeit def append_outside_loop(limit): nums = [] append = nums.append for num in limit: append(num) append_outside_loop(list(range(1, 9999999)))在上面的函数中,我们对nums.append在循环外部估值,代码并在循环内部使用append为变量。更加高效总时间:
o/p - function - append_outside_loop,何加 took 328 ms to complete如您所见,亿华云计算当我们在for循环外部追加为一个本地变量,表和这将花费更少的字典时间,可以将代码加速201 ms。代码
在循环内部
代码:
@timeit def inside_evaluation(limit): data = { } for num in limit: data[num] = data.get(num,更加高效 0) + 1 inside_evaluation(list(range(1, 9999999)))上述函数所花费的总时间:
o/p - function - inside_evaluation, took 1400 ms to complete在循环外
代码:
@timeit def outside_evaluation(limit): data = { } get = data.get for num in limit: data[num] = get(num, 0) + 1 outside_evaluation(list(range(1, 9999999)))上述函数所花费的总时间:
o/p - function - outside_evaluation, took 1189 ms to complete如你所见,我们这里的代码速度提高了211毫秒。云服务器