我在写3个不同的函数:
第一个度量函数运行x次所需的时间
第二种方法测量每次调用所用的时间并返回最佳值
第三个返回从多次重复到第一个函数调用的最佳时间
但是,从上一个函数返回的结果来看,total的所有运行中的“最佳”时间比total的最后一个调用要长
这对我来说似乎很奇怪,因为我认为“最好的”应该是所有电话中最低的
我正在ManjaroLinux操作系统上用Pycharm运行这个程序。Python 3.7版
"""
Homegrown timing tools for function calls.
Does total time, best of time, and best of totals time
"""
import time, sys
timer = time.process_time if sys.platform == 'win' else time.time
def total(reps, func, *args, **kwargs):
repslist = list(range(reps))
start = timer()
for i in repslist:
ret = func(*args, **kwargs)
elapsed = timer() - start
return (elapsed, ret)
print(total(40, pow, 2, 50))
def bestof(reps, func, *args, **kwargs):
best = 2 ** 32
repslist = list(range(reps))
for i in repslist:
start = timer()
ret = func(*args, **kwargs)
elapsed = timer() - start
#print('elapsed', elapsed)
if elapsed < best:
best = elapsed
#print('best', best)
return (best, ret)
print(bestof(40, pow, 2, 50))
def bestoftotal(reps1, reps2, func, *args, **kwargs):
return bestof(reps1, total, reps2, func, *args, **kwargs)
print(bestoftotal(50, 40, pow, 2, 50))
这是我得到的结果:
(1.6689300537109375e-05, 1125899906842624)
(2.384185791015625e-07, 1125899906842624)
(1.5974044799804688e-05, (1.5020370483398438e-05, 1125899906842624))
但是,最后一个调用在我看来并不正确,因为最左边的值是所有总计中的“最佳”时间,右边是最后一个调用的总计以及pow函数返回的值。最后一个电话不是最好的吗???或者这个调用不包括在bestof函数中
目前没有回答
相关问题 更多 >
编程相关推荐