Un amico (compagno di script di python ricreativo di basso livello) mi ha chiesto di controllare il codice. Ho notato che aveva 7 dichiarazioni separate che sostanzialmente dicevano.Python se l'efficienza dell'istruzione
if (a and b and c):
do something
le dichiarazioni a, b, c hanno verificato la loro uguaglianza o la mancanza di valori impostati. Mentre lo guardavo, ho scoperto che a causa della natura dei test, potevo riscrivere l'intero blocco logico in 2 rami che non erano mai andati più di 3 in profondità e raramente superavano il primo livello (rendendo la prova più rara test fuori primo).
if a:
if b:
if c:
else:
if c:
else:
if b:
if c:
else:
if c:
Per me, logicamente sembra che dovrebbe essere più veloce se si stanno facendo meno test, più semplici che non riescono più velocemente e andare avanti. Le mie vere domande sono
1) Quando dico se e se, se il caso fosse vero, il resto viene completamente ignorato?
2) In teoria sarebbe
se (a, b, c)
prendere tutto il tempo come i tre separato, se le dichiarazioni farebbe?
concordato. Non preoccuparti delle prestazioni, preoccupati della leggibilità. Come dice Martin Fowler: "Ogni pazzo può scrivere codice che un computer può capire ... Ma solo i buoni programmatori scrivono un codice che gli umani possano capire". –
E se sospetti di avere un problema di prestazioni, la prima cosa da fare è misurare la velocità del tuo codice. Quindi scrivi la tua versione alternativa, misurala e verifica se le tue modifiche rendono il codice più veloce. C'è una grande sezione in * Code Complete * su questo. –