Bonjour à tous ,
je connais un peu le language vb.net mais j'utilise principalement le language Tcl/tk.
Il y a quelques jours j'ai eu besoin d'extraire des données sur un fichier texte de plusieurs gigaoctets (> 8 gb)
J'ai tenté de le faire en tcl/tk mais sans grande conviction... et ce que je redoutais arriva , un temps de traitement très long.
J'ai donc essayé de faire mon traitement en vb.net.
En parcourant un peu Google la je suis tombé sur ces 2 fonctions : File.ReadLines() et Parallel.ForEach()
Voila à quoi ressemble mon code :
Et la miracle (ou pas) ... le temps de traitement est drastiquement descendu...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub Main(args As String()) Dim po As New ParallelOptions po.MaxDegreeOfParallelism = System.Environment.ProcessorCount Parallel.ForEach(File.ReadLines(args(0)), po, Sub(line) If line.Contains(args(1)) Then ' traitement données... End If End Sub) End Sub
La langue de Shakespeare n'étant pas trop mon fort (je trouve principalement de la doc en Anglais)
Je comprends File.ReadLines(args(0)) : Ouverture du fichier > lecture ligne par ligne > fermeture du fichier
Par contre pour Parallel.ForEach(...) j'ai l'impression que chaque lignes de mon fichier sont traitées dans plusieurs thread et tous cela en parallèle.
Je ne suis pas un expert dans le traitement en parallèle et la plupart du temps je travail en séquentiel
Suis-je dans le vrai ?
Mon but et d'essayer de comprendre ce bout de code pour le réimplanter en tcl/tk.
Merci de votre aide
Partager