Esistono standard per il confronto sperimentale dei tempi di esecuzione?


10

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.nrnr

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  .nr

  • 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.n


Potrebbe essere utile spiegare il tuo ragionamento sul perché pensi che "non c'è modo di evitarlo nel mio caso". Ma ovviamente, probabilmente come una domanda separata e link lì perché questa domanda è focalizzata abbastanza bene così com'è.
Apiwat Chantawibul,

@Billiska: non sono esattamente sicuro di cosa tu voglia che faccia. Perché dovrei spiegare il mio ragionamento per un approccio sperimentale in una domanda separata? Non ho domande al riguardo.
Wrzlprmft,

Non sono d'accordo con te nel prendere il tempo minimo di esperimento ripetuto. Sembra che ci possa essere solo un outliner verso l'alto. Potrebbe anche essere possibile avere una poltrona ribassata verso il basso? È più tipico esaminare più statistiche contemporaneamente, ad esempio, media, mediana, max. Chissà che possano mostrare qualcosa che non ti aspettavi. Dopo tutto, è un esperimento empirico.
Apiwat Chantawibul,

2
Questo è molto ampio; libri possono essere scritti sull'argomento, ad esempio "A Guide to Experimental Algorithmics" di McGeoch. Si potrebbe anche dire che stai chiedendo "Esistono standard per fare scienza?". Quindi non sono sicuro che questo sia ragionevolmente mirato. Hai domande più specifiche?
Raffaello

Risposte:


2

"A Guide to Experimental Algorithmics" di CC McGeoch è un buon riferimento per

  • come impostare esperimenti su algoritmi,
  • come interpretare e usare i risultati e
  • come iterare verso risultati più significativi se necessario.

2

Oltre al tempo trascorso per ogni esecuzione, riporta i secondi della modalità utente e di sistema, i pacchetti IP totali e gli I / O totali del disco, anche solo per verificare che alcuni numeri siano costantemente "bassi" e abbiano un impatto trascurabile sul tempo trascorso.

Su https://wiki.freebsd.org/BenchmarkAdvice PHK e altri offrono buoni consigli, tra cui

Usa ministat per vedere se i tuoi numeri sono significativi. Prendi in considerazione l'acquisto di "Guida dei cartoni animati alle statistiche"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.