Tempi di elaborazione dei file

2

Ho un programma molto semplice in Ruby che apre un file dizionario, sorted-words.txt e stampa tutte le parole in maiale-latino. Ho provato la sua velocità, e la prima volta che l'ho eseguito, il programma è finito in circa 1,6 secondi . La seconda volta che ho eseguito il programma, ci sono voluti circa 2,1 secondi . Tra le due esecuzioni, c'era un'attesa di circa 10 secondi, guardando i risultati ed eseguendo di nuovo il programma. Ho aspettato un minuto, l'ho eseguito di nuovo ed è durato 1,8 secondi . Sebbene la variazione sia lieve, è ancora lì. Perché c'è questa variazione?

    
posta Joe Loo 05.05.2012 - 02:02
fonte

1 risposta

3

Variazioni del genere sono tipicamente dovute al sistema operativo e alla varianza dell'hardware.

Nel sistema operativo, esegue processi come il tuo programma su una base di tempo condiviso in modo che anche per un programma molto piccolo e semplice il multitasking dei programmi in background influenzi leggermente i risultati.

A livello hardware ci sono diverse cose in corso, ma soprattutto l'I / O dei file. Nel file I / O il programma carica in RAM, quindi comunica con la CPU che è multitasking. Deve quindi inviare, attendere e ricevere dal disco rigido. Poiché il disco rigido è un dispositivo sequenziale, si hanno variazioni di accesso e tempo di lettura poiché potrebbe non essere sempre nello stesso posto. Per testare questo, ottenere un disco a stato solido e un disco rigido standard e testarli nello stesso sistema. Ci dovrebbe essere meno variazione nel sistema a stato solido. In caso contrario, si tratta di un altro problema.

    
risposta data 05.05.2012 - 03:16
fonte

Leggi altre domande sui tag