la prima volta che eseguo questa routine (nella cartella ci sono un migliaio di files di testo) dopo avere acceso il PC:
codice:
For Each foundFile As String In My.Computer.FileSystem.GetFiles( _
Path, FileIO.SearchOption.SearchAllSubDirectories, "*.txt")
Dim fs As FileStream = New FileStream(foundFile, FileMode.Open, _
FileAccess.Read, FileShare.Read)
Dim sr As StreamReader = New StreamReader(fs)
FileReader = sr.ReadToEnd
sr.Close()
fs.Close()
(Elaborazione FileReader, poca roba, meno di un millisecondo)
Next
ci metto quasi 30 secondi
dalla seconda volta in poi, anche chiudendo il programma e riaprendolo, meno di un secondo!!
Ora, dato che "every time you change a String variable, you leave the existing String object allocated and create a new one" evidentemente la prima volta alloca nuova memoria per ogni FileReader letto e dalla seconda volta in poi sa già dove trovare i dati in memoria, senza bisogno di rileggere i dati da file, velocizzando enormemente le operazioni.
La cosa che trovo inspiegabile è che questa velocità 30 volte maggiore si realizza anche se chiudo e riapro il programma... comunque per carità, molto meglio così.
La domanda che rimane a questo punto è: qualche idea per velocizzare le operazioni già alla prima volta??
grz