Sto lavorando a un progetto che necessita seriamente di alcune regolazioni delle prestazioni.Le migliori pratiche di test delle prestazioni quando si esegue TDD?
Come si scrive un test che non riesce se le mie ottimizzazioni non migliorano la velocità del programma?
Elaborare un po ':
Il problema non è scoprire quali parti per ottimizzare. Posso usare vari strumenti di profilazione e benchmark per questo.
Il problema sta utilizzando i test automatizzati per documentare che un'ottimizzazione specifica ha effettivamente avuto l'effetto desiderato. Sarebbe anche altamente auspicabile se potessi usare la suite di test per scoprire in futuro possibili regressioni delle prestazioni.
Suppongo che potrei semplicemente eseguire i miei strumenti di profilazione per ottenere alcuni valori e quindi affermare che il mio codice ottimizzato produce valori migliori. Il problema ovvio con ciò, tuttavia, è che i valori di benchmark non sono valori difficili. Variano con l'ambiente locale.
Quindi, è la risposta a utilizzare sempre la stessa macchina per eseguire questo tipo di test di integrazione? In tal caso, dovresti comunque avere una certa sfocatura nei risultati, poiché anche gli stessi risultati di benchmarking dell'hardware possono variare. Come quindi tenerne conto?
O forse la risposta è mantenere versioni precedenti del programma e confrontare i risultati prima e dopo? Questo sarebbe il mio metodo preferito, dal momento che è essenzialmente agnostico dell'ambiente. Qualcuno ha esperienza con questo approccio? Immagino che sarebbe necessario mantenere una versione precedente solo se è possibile eseguire tutti i test se le prestazioni dell'ultima versione sono almeno altrettanto buone della versione precedente.
Configura questa asserzione per il controllo di revisione? Ti aspetti che venga estratto su più di un tipo di macchina? Se è così (come immagino), come si fornisce ragionevole aspettativa che le proprie asserzioni siano appropriate su una macchina più lenta/più veloce? – bukzor