Réponse acceptée !
Hello,
A mon avis, le problème ne vient ni du split, ni de la lecture du fichier.
J'ai essayer le bout de code que tu as mis, et avec un fichier de 100'000 lignes formatté comme suit :
1|2|3|4
2|4|6|8
3|6|9|12
Il me faut moins de 0.1 seconde pour exécuter ce code.
Si par contre, je rajoute
string s =""; //à l'extérieur du while
et
s+= temp[i] +" ";//dans la boucle for. Inutile de faire un .ToString, temp[i] est déjà un string.
et
s+= Environment.NewLine; // après la boucle for
Avec ça, le temps de traitement monte à presque 20 minutes !
Par contre, si j'utilise un StringBuilder (dans l'assembly System.Text)
StringBuilder sb =new StringBuilder();//à l'extérieur du while
s.AppendFormat("{0} ", temp[i]);//dans la boucle for
et
sb.AppendLine();// après la boucle for
Avec ça, le temps de traitement n'est plus que de 0.2 secondes !!
Mais attend, on peut faire encore mieux :
Si ton but est de récupérer tout le texte de ton fichier dans un string ou les '|' sont remplacés par des ' ', tu fais ça en une ligne :
string s = File.ReadAllText(nom).Replace('|', ' ');
Temps de rtaitement : inférieur à 0.05 secondes, toujours pour un fichier de 100'000 lignes !!!
Amicalement, SharpMao
"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)