I files sono un migliaio, nel mio caso sono su HD interno (più precisamente su 2 HD in Raid1, quindi teoricamente la velocità di lettura dovrebbe essere un attimino maggiore), ed hanno una dimensione complessiva di 47.5 Mb.
Ora, visto che oggi come oggi l' HD più scabeccio nei test reali legge sui 50 MB/s, non dico che mi aspetto di leggerli in 1 secondo, dato che sono 1.000 e vanno aperti e chiusi, ma certo la cosa non può richiedere più di 2-3 secondi e non i 30 secondi e più della prima volta che lancio il programma.
Nel mio caso i files non sono in sottocartelle, ma dato che potrebbero esserlo il codice lo prevede, ma anche in questo caso mi aspetto un calo di prestazioni di qualche decimo di secondo, non di più.
Preciso che se sostituisco: FileReader = sr.ReadToEnd
con: FileReader = sr.ReadLine()
cioè se leggo solo la prima riga anziché tutto il file non ho il minimo miglioramento in fatto di prestazioni al primo lancio del PC (siamo sempre sui 30 secondi)... e ciò mi convince che di quei 30 e passa secondi la maggior parte è dedicata ad organizzare una cache o un qualche buffer, destinati a durare finché non si chiude il PC.... E NON a leggere dati.
Come già detto se chiudo il programma e lo rilancio i tempi diventano ridicoli, e se lancio il compilato invece che il debug anche esso si allaccia alla cache (non so proprio come, dal momento che a tutti gli effetti (vedi My.Settings ecc) dovrebbe essere un altro programma)... ed invece anche lui da subito legge il ciclo in meno di un secondo.
Preciso altresì che se, come detto, all' avvio del PC leggo solo la prima riga, poi cambio il codice e rilancio, a questo punto per leggere tutto il testo non rioccorrono 30 secondi, ma 6 secondi: a mio parere questa è la prova definitiva che non è un problema di lettura FISICA su HD (che imho non dovrebbe richiedere più di un paio di secondi) ma di cache da organizzare da parte del codice.
Quindi a questo punto la domanda è: come organizzare la cache / riservare memoria per i buffer tramite codice PRIMA di iniziare a leggere i dati?
.