Sto usando fs.Length
, dove fs
è un FileStream
.Il modo più veloce per leggere la lunghezza del file C#
Si tratta di un'operazione O(1)
? Penserei che questo sarebbe solo leggere dalle proprietà del file, al contrario di passare attraverso il file per trovare quando la posizione di ricerca ha raggiunto la fine. Il file che sto cercando di trovare può durare da 1 MB a 4-5 GB.
Tuttavia ho notato che esiste una classe FileInfo
, che ha anche una proprietà Length
.
Queste due proprietà Length
richiedono in teoria la stessa quantità di tempo? Oppure è fs.Length
più lento perché deve aprire prima il FileStream
?
malvagio, grazie per le informazioni sul tempo! – jpints14
Il benchmarking in questo modo potrebbe non essere il modo più efficace di testare una differenza (se ce n'è una). Immagino che i fattori di cache/os del disco giochino un ruolo considerevole nel tenere i tempi bassi. – PaulG
@PaulG Hai ragione. Il benchmarking è ** sempre ** più complicato di quanto sembri. Il benchmark semplice sopra ** solo ** fornisce alcune indicazioni sul risultato effettivo. Siccome non ritorna, diciamo 100000 vs 250, penso che sia possibile concludere che entrambi i metodi non sono troppo diversi_ (in termini di tempo di calcolo). – ken2k