È possibile utilizzare il profilo per verificare se l'ottimizzazione ha avuto esito positivo?

4

So che la profilatura è utile per identificare i colli di bottiglia e determinare quali parti del codice richiedono quanto tempo è necessario eseguire. Quest'ultimo non è sempre molto facile da tracciare nel mezzo di altri percorsi in esecuzione, quindi una volta deciso cosa voglio ottimizzare potrebbe essere problematico vedere il miglioramento dei numeri. Ciò è particolarmente vero nelle app desktop che funzionano costantemente ed è difficile: eseguire lo stesso percorso ed eseguirlo lo stesso numero di volte per avere un confronto affidabile.

Non mi aiuterà se prima dell'ottimizzazione la funzione eseguiva X volte e impiegava 500 millisecondi, e dopo l'ottimizzazione eseguiva Y volte e impiegava 400 millisecondi.

In questi casi, posso in qualche modo utilizzare un profiler per determinare il miglioramento o devo risolvere altre opzioni?

    
posta Maurycy 18.02.2013 - 19:02
fonte

2 risposte

6

once I decide what I want to optimize it might be problematic to see the improvement in numbers.

Ci si deve chiedere se hai davvero trovato un collo di bottiglia, e anche se ne hai davvero eliminato uno, se non riesci a vedere l'effetto nel profiler.

This is especially true in desktop apps which run constantly and it is difficult to: execute the same path and execute it the same number of times to have reliable comparison.

Questa è una delle cose che i test unitari ti possono aiutare. Dovresti essere in grado di ricreare qualsiasi situazione che ti interessa in un test, anche (soprattutto!) Quelli che potrebbero essere molto difficili da replicare in natura. Puoi anche ripetere quel test tutte le volte che vuoi. Se esegui il profiler contro il tuo test, dovresti essere in grado di vedere l'effetto di qualunque miglioramento tu faccia. Se non riesci a misurare l'effetto del miglioramento, non hai alcun motivo per sostenere che hai migliorato il codice.

    
risposta data 18.02.2013 - 19:49
fonte
3

In such cases, can I somehow use a profiler to determine improvement [...]?

Naturalmente. I tempi che ottieni non solo aiutano a determinare il miglioramento, ma puoi vedere come gli hotspot si muovono nel processo, ottenendo un feedback molto informato su come le modifiche influiscono sui percorsi di esecuzione critici e su cose come le mancanze della cache.

    
risposta data 25.12.2015 - 08:13
fonte

Leggi altre domande sui tag