import time
def find(a):
count = 0
for item in a:
count = count + 1
if item == 2:
return count
a = [7,4,5,10,3,5,88,5,5,5,5,5,5,5,5,5,5,55,
5,5,5,5,5,5,5,5,5,5,5,5,55,5,5,5,5,5,
5,5,5,5,5,2,5,5,5,55,5,55,5,5,5,6]
print (len(a))
sTime = time.time()
print (find(a))
eTime = time.time()
ave = eTime - sTime
print (ave)
我想测量这个功能的执行时间 我的 print(ave)返回0;为什么呢?
答案 0 :(得分:1)
要准确计算代码执行时间,您应该使用timeit
,而不是time
。 timeit
可以轻松地重复代码块进行计时,以避免非常接近于零的结果(问题的原因)
import timeit
s = """
def find(a):
count = 0
for item in a:
count = count + 1
if item == 2:
return count
a = [7,4,5,10,3,5,88,5,5,5,5,5,5,5,5,5,5,55,5,5,5,5,5,5,5,5,5,5,5,5,55,5,5,5,5,5,5,5,5,5,5,2,5,5,5,55,5,55,5,5,5,6]
find(a)
"""
print(timeit.timeit(stmt=s, number=100000))
这将测量在多行字符串s
中运行代码100,000次所需的时间。请注意,我将print(find(a))
替换为find(a)
,以避免将结果打印100,000次。
多次运行有利于以下几个原因:
timeit
比较两种方法来查看哪种方法更快,则多次运行会更容易看到最终结果答案 1 :(得分:0)
我也不确定;我得到的时间大约是1.4E-5。 尝试将调用放入循环中以测量更多迭代:
for i in range(10000):
result = find(a)
print(result)