Esiste uno strumento (quantitativo) per misurare le prestazioni delle funzioni in base al suo input?
Finora, gli strumenti che ho usato per misurare le prestazioni del mio codice, mi dicono quanto tempo ho trascorso in funzioni (come Jetbrain Dottrace per .Net), ma mi piacerebbe avere più informazioni sui parametri passati al funzione per sapere quali parametri influenzano maggiormente le prestazioni.
Diciamo che ho una funzione del genere:
int myFunction(int myParam1, int myParam 2) {
// Do and return something based on the value of myParam1 and myParam2.
// The code is likely to use if, for, while, switch, etc....
}
Se vuoi uno strumento che mi permetta di dirmi quanto tempo è trascorso in myFunction
in base al valore di myParam1
e myParam2
.
Ad esempio, lo strumento mi darebbe un risultato simile a questo:
For "myFunction" :
value | value | Number of | Average
myParam1 | myParam2 | call | time
---------|----------|-----------|--------
1 | 5 | 500 | 301 ms
2 | 5 | 250 | 1253 ms
3 | 7 | 1268 | 538 ms
...
That would mean that myFunction has been call 500 times with myParam1=1 and myParam2=5, and that with those parameters, it took on average 301ms to return a value.
L'idea che sta dietro è quella di fare un po 'di ottimizzazione statistica organizzando il mio codice in modo tale che i blocchi di codici che sono più probabilità di essere eseguiti siano testati prima di quelli che hanno meno probabilità di essere eseguiti.
Per dirla chiaramente, se so quali sono i valori più utilizzati, posso riorganizzare la struttura if / while / for etc .. della funzione (e l'intero programma) per ottimizzarlo.
Mi piacerebbe trovare questi strumenti per C ++, Java o.Net.
Nota : non sto cercando suggerimenti tecnici per ottimizzare il codice (come passare parametri come const, funzioni di inlining, inizializzare la capacità di vettori e simili).