@ gibra

interessanti considerazioni che hanno meritato una serie di prove

1)
Non è l' antivirus: alla apertura del PC ho chiuso il servizio (NOD32) e poi ho avviato le statistiche: nessuna variazione di tempi di lettura apprezzabile.

2)
Ho creato due nuove cartelle, ed ho inserito in ciascuna metà dei files totali. A questo punto ho letto prima una "mezza cartella", poi la seconda mezza cartella ed in ultimo la cartella con tutti i files. La prima volta che ho letto le tre cartelle i tempi erano lunghi, dalla seconda in poi i tempi dimezzati, come al solito: questo vuole dire NON E' QUESTIONE DI JIT (che se no già leggere la seconda cartella avrebbe dovuto comportare tempi dimezzati), ma in effetti di CACHE.

3)
A questo punto una curiosità: ma come fanno .net o Winzozz a "sapere" che ogni diverso ciclo for - next legge ed elabora files diversi ed aprire quindi gli spazi riservati a tre caches diverse??????

Cioè, io immagazzino innanzitutto tutti i nomi dei files della cartella, path comprese, in una matrice MyFiles(). Premendo il pulsante "Elabora" parte un ciclo:

For x=0 to MyFiles.Lenght-1
fileReader = My.Computer.FileSystem.ReadAllText(MyFiles(x))
...
...
Next

che esegue le elaborazioni spulciando ciò che è contenuto in fileReader.

Ma ad ogni nuova pressione del tasto "Elabora" (sia dei files contenuti nella stessa cartella di prima sia dei files contenuti in un altra) le variabili vengono dimensionate (e quindi azzerate). Che nella CACHE, con tutti i valori delle variabili sia salvata L' ULTIMA LETTURA posso capirlo, ma che a letture di files diversi venga riservato spazio per una nuova cache relativa a quella diversa lettura, questa non me la spiego

4)
Anche questa è un vero mistero.... come ho detto ho creato tre cartelle, due contenenti metà dei files ed una contenente tutti i files. Un ciclo For...Next legge poi questi files uno per uno, elaborandoli.

Ciò premesso per senso verrebbe da pensare che la somma dei tempi necessari ad elaborare le due "mezze cartelle" dovrebbe eguagliare il tempo necessario a leggere la cartella intera: NON E' COSI'... sia la prima lettura (coi tempi doppi) sia le seconde letture (coi tempi dimezzati) per leggere la cartella con tutti i files occorre MOLTO più della somma dei tempi necessari a leggere le due mezze cartelle !!!!!

Come detto, questa non me la spiego... nessuna matrice viene ridimensionata (che allora potrei pensare AL LIMITE ad un rallentamento dovuto al fatto di trovare più spazio in memoria, anche se sicuramente questo non aumenterebbei tempi di così tanto), i loro elementi sono fissi ed acquistano singolarmente, passaggio dopo passaggio, solo valori pari alla somma dei valori delle "mezze matrici"...

Forse si potrebbe intervenire su questo versante per ottimizzare i tempi, se capissi l' arcano...

Mi sa che tutto si riduca ad una ottimizzazione della cache... ma come????