Ho bisogno di leggere un grande file di testo separato dallo spazio e contare il numero di istanze di ogni codice nel file. Essenzialmente, questi sono i risultati dell'esecuzione di alcuni esperimenti centinaia di migliaia di volte. Il sistema sputa fuori un file di testo che appare un po 'come questo:Analisi efficiente di un grande file di testo in C#
A7PS A8PN A6PP23 ...
E ci sono letteralmente centinaia di migliaia di queste voci e ho bisogno di contare le occorrenze di ciascuno dei codici.
Immagino di poter aprire uno StreamReader
e passare linea per linea, dividendo il carattere dello spazio. Verifica se il codice è già stato rilevato e aggiungendo 1 al conteggio di quel codice. Tuttavia, questo è probabilmente piuttosto ingenuo, data la dimensione dei dati.
Qualcuno sa di un algoritmo efficiente per gestire questo tipo di elaborazione?
UPDATE:
OK, in modo che il consenso sembra essere il mio approccio è nella giusta direzione
Quello che mi sarei interessato a sentire le cose come sono - che è più efficiente - StreamReader. TextReader, BinaryReader
Qual è la migliore struttura per memorizzare il mio dizionario di risultati? HashTable, SortedList, HybridDictionary
Se non ci sono interruzioni di riga, il file (non mi è stato ancora fornito un campione) dividerà il tutto in uno spazio inefficiente?
In sostanza, sto cercando di rendere il più performante possibile le
grazie ancora
Forse provarlo prima, controllare i tempi e se ciò non è accettabile, chiedere di nuovo. – RvdK
Francamente, la tua soluzione sembra essere ok, in ogni caso dovrai consultare l'intero file per contare i diversi codici di occorrenza. È possibile ottimizzare il modo per verificare se è stato trovato un codice prima, ad esempio utilizzando set o mappa – tchrikch
Se si intende leggerlo riga per riga, assicurarsi che il file sia effettivamente composto da più di una riga :) – Constantin