# -*- coding: utf-8 -*-
"""
函数计数装饰器计时,测试二维列表按行和列访问差异
"""
import time
from functools import wraps
# 运行计时
def time_count(func):
@wraps(func)
def inner(*args, **kwargs):
_t1 = time.time()
ret = func(*args, **kwargs)
_t2 = time.time()
print("{}\n用时:{}秒".format('_' * 50, round((_t2 - _t1), 4)))
return ret
return inner
@time_count
def travel_by_row(arr):
print("二维数组按行遍历")
n = 0
for i in range(num):
for j in range(num):
n += arr[i][j]
return n
@time_count
def travel_by_col(arr):
print("二维数组按列遍历")
n = 0
for j in range(num):
for i in range(num):
n += arr[i][j]
return n
if __name__ == "__main__":
num = 5000
a = [[m + n for m in range(num)] for n in range(num)]
travel_by_row(a)
print("\n")
travel_by_col(a)
输出结果:
二维数组按行遍历
__________________________________________________
用时:1.795秒
二维数组按列遍历
__________________________________________________
用时:3.511秒