def insertsort(iterable) :
global start_time
start_time = time.time()
for current in range(1,len(iterable)) : # iterable[0] is consdiered as resorted in the beginning
current_value = iterable[current] # saving current value
compare = current
while 0 < compare and iterable[compare-1] > current_value : # finding out where to put the sorted current value
iterable[compare] = iterable[compare-1] # this line in the while loop moves the elements not sorted
compare -= 1
iterable[compare] = current_value # put current value into the right place that the while loop found out
calruntime()
print("--- %s seconds ---" % (time.time() - start_time))
return(iterable)
runtime={}
def calruntime() :
global runtime
runtime.update({time.asctime() : time.time() - start_time})
for n in range(25) : # 25 tests
data = [i for i in range(5000,0,-1)] # number of sample: 5000
insertsort(data)
Я измерил время выполнения этого кода и обнаружил, что каждое время выполнения отличается, хотя все они одинаковы с одним и тем же вводом. (Без рандомизации)
Когда я сделал log это было примерно так.
Sun Aug 2 10:26:24 2020 : 4.42353892326355
Sun Aug 2 10:26:28 2020 : 4.32453989982605
Sun Aug 2 10:26:32 2020 : 4.24298882484436
Sun Aug 2 10:26:37 2020 : 4.3115057945251465
Sun Aug 2 10:26:41 2020 : 4.226868152618408
Sun Aug 2 10:26:45 2020 : 4.148167371749878
Sun Aug 2 10:26:49 2020 : 4.231259107589722
Sun Aug 2 10:26:54 2020 : 4.3146984577178955
Sun Aug 2 10:26:58 2020 : 4.167114019393921
Sun Aug 2 10:27:02 2020 : 4.247375965118408
Average : 4.263805651664734
Они различаются примерно от 4,14 до 4,42 со средним значением 4,26.
Различный диапазон составляет примерно 6% от среднего времени выполнения что я считаю значительным.
Я хочу знать, почему возникает эта разница, поскольку я запустил один и тот же код с одним и тем же вводом и получил разное время выполнения.
Я предполагаю, что это связано с тем, что компьютер назначает данные каждый раз по разным адресам, несмотря на один и тот же код.
Буду признателен за ответы заранее: D