Qual è la ragione per cui la trasmissione di un intero a un float è più lenta dell'aggiunta di 0.0 a quell'int in Python?Perché chiamare float() su un numero più lento rispetto all'aggiunta di 0.0 in Python?
import timeit
def add_simple():
for i in range(1000):
a = 1 + 0.0
def cast_simple():
for i in range(1000):
a = float(1)
def add_total():
total = 0
for i in range(1000):
total += 1 + 0.0
def cast_total():
total = 0
for i in range(1000):
total += float(1)
print "Add simple timing: %s" % timeit.timeit(add_simple, number=1)
print "Cast simple timing: %s" % timeit.timeit(cast_simple, number=1)
print "Add total timing: %s" % timeit.timeit(add_total, number=1)
print "Cast total timing: %s" % timeit.timeit(cast_total, number=1)
la cui uscita è:
Aggiungere semplice temporizzazione: 0,0001220703125
Cast semplice temporizzazione: 0,000469923019409
Aggiungere temporizzazione totale: 0,000164985656738
temporizzazione totale Cast: 0.00040078163147
Qual è l'output di 'dis.dis'? –
In questo modo, cosa ti aspetti di essere più veloce? 'a =" 100 "' o 'b = str (100)'? –
@Jeff: il tuo esempio è qualcosa di diverso. Sarebbe più come 'float (100)' vs '100.0', quando la domanda riguarda' float (100) 'vs' 100 + 0.0'. – GingerPlusPlus