stavo ottimizzando po 'di codice Python, e ho provato il seguente esperimento:Perché la sottrazione è più veloce dell'aggiunta in Python?
import time
start = time.clock()
x = 0
for i in range(10000000):
x += 1
end = time.clock()
print '+=',end-start
start = time.clock()
x = 0
for i in range(10000000):
x -= -1
end = time.clock()
print '-=',end-start
Il secondo ciclo è affidabile veloce, ovunque da un soffio al 10%, a seconda del sistema corro su. Ho provato a variare l'ordine dei loop, il numero di esecuzioni, ecc. E sembra funzionare ancora.
Straniero,
for i in range(10000000, 0, -1):
(cioè eseguito il loop all'indietro) è più veloce di
for i in range(10000000):
anche quando il contenuto di loop sono identici.
Cosa dà e c'è una lezione di programmazione più generale qui?
Hai provato questo con 'xrange()' invece di 'range()', quindi Python non deve allocare spazio per dieci milioni di interi? Inoltre, stai eseguendo questo su Python 2.xo su Python 3.x, che hanno implementazioni significativamente diverse di 'range()'? –
È possibile che si esegua questo codice su una CPU con frequenza variabile? – tzot