2015-10-12 4 views
-3

У меня есть программа python, определенная функцией myFunc(m,n)Почему time.time() дает 0.0?

В принципе, функция содержит два для петель.

def myFunc(m, n) : 
    for i in range(m) : 
     for j in range(n) : 
      # do it ... 
    return 

Я хотел бы, чтобы вычислить время, затраченное на m,n=20,20

Я делаю это так:

start_time = time.time() 
b = myFunc(m,n) 
elapsed_time = time.time() - start_time 
print elapsed_time 

В результате 0,0 почти всегда. Зачем?

+1

20 петель слишком короткие. Попытайтесь сделать его искусственно большим. – stanleyli

+0

Редко '0.0009' и почти всегда' 0.0'. – Kira

+0

LOL для downvotes. – Kira

ответ

2

Per the time.time docs,

даже несмотря на то, время всегда возвращается в виде числа с плавающей точкой, а не все системы обеспечивают время с большей точностью, чем на 1 секунду.

Так что если myFunc занимает меньше секунды, и вы используете такую ​​ОС, то разница между двумя вызовами time.time может быть 0.0.

Вы можете использовать timeit.default_timer вместо time.time. timeit.default_timer выберет лучший таймер (time.time, time.clock или time.perf_counter) для вашей системы.

Также обратите внимание, что the timeit module предлагает более точные способы проверки производительности фрагментов кода.

+0

Спасибо. Я ценю это. – Kira

4

Потому что time.time() - time.time() будет 0.0, когда myFunc не займет много времени.

+0

Спасибо. Я понял. – Kira

Смежные вопросы