Concentrarsi sulla scrittura di codice "efficiente" senza effettivamente definire l'efficienza è una trappola in cui gli sviluppatori cadono.
L'efficienza non riduce sempre il numero di cicli della CPU necessari per eseguire un'attività. In effetti, per la maggior parte dei programmatori, nella maggior parte dei casi, ossessionare il processo di rasatura dei cicli della CPU è una completa perdita di tempo.
Dove Efficienza = minimizzazione dei cicli della CPU
La maggior parte del software aziendale contiene logica banale.
Immagina di spendere 30 minuti per radere un po 'di CPU dal tuo codice. Diciamo solo che hai avuto una buona giornata e hai rasato 2000 cicli. La tua tipica CPU a 2 GHz subirà 2 milioni di cicli al secondo, il che significa che i tuoi 2000 cicli salvati ammontano a 0,000001 secondi o 1 microsecondo salvati.
La tua applicazione dovrebbe eseguire quel codice ottimizzato 30.000.000 volte prima di interrompere il tuo investimento nel tempo.
In tutto il mio tempo nel mondo del software aziendale, non posso pensare a un'istanza in cui quell'investimento iniziale di 30 minuti sarebbe stato ripagato prima di lasciare quel ruolo per un altro lavoro.
Dove Efficienza = tempo risparmiato IN GENERALE
D'altro canto, se definisci l'efficienza in termini di tempo risparmiato in generale , allora i tuoi razzi Sky ROI.
Quindi, in questo scenario, il tempo risparmiato include (ma non è limitato a) quanto segue:
- Il tuo tempo prova la tua API
- Problemi di debug dell'ora di Consumer Consumer con la tua API
- Problemi di debug in tempo con il tuo consumer API
- Il tuo tempo di gestione chiama una API fragile e rotta (no, il consumatore non ha letto la tua documentazione)
Con questa definizione di efficienza, un po 'di programmazione difensiva fa molto. Fare in modo che la tua API fallisca presto e non riesca a gestire i dati di input errati richiede un tempo di anticipo molto ridotto e ti consente di risparmiare tempo e denaro per i tuoi clienti.
La cosa importante da ricordare è che il tempo tuo e il tempo del consumatore del tuo utente sono molto più preziosi ( leggi: costoso ) del tempo della CPU .
Altri domini
Esistono tuttavia domini in cui l'efficienza può significa minimizzare i cicli della CPU. Ma tieni presente che quei domini oggi sono sempre meno.
Due di quelli che mi vengono in mente sono la codifica per sistemi realtime e analisi dei dati ad alto volume .
TL; DR
Quindi, a meno che tu non sappia per certo che hai bisogno di radere i cicli della CPU, e un approccio migliore sarebbe il codice in modo tale da salvare te stesso e altri come molto tempo possibile. Nel mondo dell'API puoi farlo con contratti di codice chiari e programmazione difensiva.