2013-05-24 10 views
6

Eseguo un benchmark più volte, per annotare la lettura media. Ma noto che dopo la prima esecuzione, le esecuzioni successive sono più veloci. Immagino che abbia qualcosa a che fare con l'Istruzione Cache, quindi quando eseguirò il programma la prossima volta, il benchmark ha già istruzioni nella cache. C'è un modo per avviare un programma con entrambe le istruzioni a freddo e le cache dei dati?Come avviare un programma con cold cache

+2

Più probabile cache del disco, avrei pensato? –

+0

Ciò è probabile perché il programma e i dati vengono letti dal disco, non a causa delle cache della CPU. – sharptooth

+0

Bella domanda !! –

risposta

4

Questo è un comportamento normale. Un modo per evitare questo problema è eseguire qualche riscaldamento prima della corsa principale. Queste sessioni di riscaldamento sovrascriveranno la memoria cache che è cresciuta in precedenza programma in esecuzione. Durante il calcolo del valore medio, escludere i valori di esecuzione del riscaldamento, è sufficiente eseguire la corsa reale. Una varietà di strumenti per la marcatura di banco là fuori che prende questo approccio come. kernbench, lmbench ecc. Dove è disponibile un valore di riscaldamento.

E, se il benchmark che si sta eseguendo dipende dai dati che devono essere letti dal disco, anche la memorizzazione nella cache del disco ha un certo impatto, un modo per evitare è di memorizzare nella cache quei dati, se possibile. Questa tecnica è usata in kernbench, per evitare problemi relativi alla cache del disco.