La mia situazione
Sto scrivendo un documento che presenta un modulo software che ho sviluppato e voglio confrontare il suo tempo di esecuzione con altri moduli per lo stesso compito. Sono a conoscenza degli svantaggi degli esperimenti di runtime , ma per favore supponiamo che nel mio caso non vi sia alcun modo per aggirare il problema. (Posso dedurre alcune proprietà teoricamente, ma non è sufficiente per tutto.)
Gli scenari specifici che voglio utilizzare per il benchmarking hanno due parametri: la complessità del problema e un seme casuale che determina il problema dettagliato. Principalmente voglio mostrare la dipendenza da . Seguendo le indagini preliminari e la teoria, l'influenza di sull'autonomia è minore o trascurabile. Il completamento di una singola attività richiede al massimo dieci minuti.
Domanda reale
Sto cercando una procedura comunemente accettata o pubblicata per l'esecuzione di tali esperimenti o almeno un elenco di insidie comuni (idealmente pubblicate).
Quello che ho trovato finora
Niente. Le ricerche su Internet rivelano tutti i tipi di risultati non correlati, ma potrei non utilizzare la terminologia corretta. Neanche la parola chiave minima, che so essere di buon livello (vedi sotto), non ha aiutato neanche.
Come lo farei
Esegui tutti gli esperimenti sullo stesso computer con software potenzialmente interferenti come una GUI disabilitata per quanto possibile.
Sottoponi tutti i moduli alla stessa selezione di scenari, vale a dire gli stessi e .
Per ogni scenario, testare i diversi moduli direttamente uno dopo l'altro in ordine casuale. In altre parole, il loop sui diversi moduli è il più interno. Ciò dovrebbe evitare distorsioni sui diversi moduli a causa delle lente fluttuazioni delle prestazioni della macchina (ad es. Dovute a sbalzi di temperatura). L'ordine casuale dovrebbe evitare la distorsione attraverso effetti come la memorizzazione nella cache o un modulo sempre testato dopo lo stesso.
Per ogni , prendi il tempo di esecuzione minimo in diversi scenari con seme diverso come parametro di riferimento. Ciò dovrebbe evitare distorsioni sui diversi moduli a causa di brevi fluttuazioni delle prestazioni della macchina che rendono le singole corse eccezionalmente cattive.