Le ottimizzazioni non dovrebbero essere mantenute a lungo termine branch
Possono essere sviluppati in una succursale e poi riuniti nel ramo di rilascio una volta completati, ma dovrebbe essere sempre possibile testare entrambe le versioni affiancate e dovrebbe essere possibile passare facilmente tra ottimizzato e versioni non ottimizzate di qualsiasi algoritmo, idealmente in fase di esecuzione.
Risposta completa
Ricorda che esiste più di una forma di ottimizzazione.
L'ottimizzazione algoritmica (sostituendo un algoritmo O (n ^ 2) con un algoritmo O (n log n) per esempio) ha quasi sempre il potenziale di fornire risparmi più significativi rispetto all'ottimizzazione dell'implementazione (srotolando a mano un loop o assicurando i loop interni i dati si adattano a un determinato livello di cache).
Sfortunatamente, quando le persone pensano all'ottimizzazione, tendono a pensare di più sull'ottimizzazione dell'implementazione, che riguarda il software specializzato in modo tale da funzionare in modo più efficiente su un'architettura, probabilmente a spese di velocità di esecuzione su un'altra architettura.
Ho già risposto a molti altri aspetti relativi alla tua domanda in la mia risposta alla domanda Come documentare e insegnare agli altri codice di ottimizzazione computazionale ottimizzato oltre il riconoscimento?
Essenzialmente, si riduce alle regole d'oro dell'ottimizzazione:
The First Rule of Program Optimisation: Don't do it.
The Second Rule of Program Optimisation (for experts only!): Don't do it yet."
— Michael A. Jackson
Per sapere se ora è il momento di ottimizzare richiede benchmark e test. Devi sapere dove il tuo codice è inefficiente, in modo che tu possa indirizzare le tue ottimizzazioni.
Per determinare se la versione ottimizzata del codice è effettivamente migliore dell'implementazione ingenua in un dato momento, è necessario confrontarli fianco a fianco con gli stessi dati.
Inoltre, ricorda che solo perché una determinata implementazione è più efficiente nell'attuale generazione di CPU, non significa che sempre sia così. La mia risposta alla domanda La micro-ottimizzazione è importante per la codifica? fornisce un esempio dell'esperienza personale in cui un'ottimizzazione obsoleta ha comportato un rallentamento dell'ordine di grandezza.