Performance des DataTable

cyberwaves Messages postés 6 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 14 juillet 2010 - 12 juil. 2010 à 19:13
cyberwaves Messages postés 6 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 14 juillet 2010 - 14 juil. 2010 à 09:18
Bonjour à tous,

Je suis en train de développer une petite appli afin d'éditer des fichiers .CSV.

je n'ai pas specialement de probleme particulier si ce n'est que je me pose une question au sujet de la rapidité d'exécution du prog.

en effet, je dois ouvrir un fichier CSV que j'affiche dans un DataGridView et un DataTable.

je donne des opérations relativement simple tel que:
- Mise en forme des date
- Concaténation de chaine
- remplacement,etc....

j'ai pour test un fichier CSV contenant environ 60 colonnes pour 1000 lignes...

Donc je me dit que sa devrait être assez rapide quand à l'exécution d'un simple boucle qui par exemple concaténer s1+S2, sur les 1000 lignes.

Or je me rend compte que cela prend quand même pas mal de temps à se réaliser!!!

en gros, je trouve pas trop normal qu'une boucle de 1000 ligne puisse prendre un temps du genre quasi 8-10sec!!!

donc ma question est de savoir si quelqu'un à déjà rencontrer ce genre de problème??

mon code n'a rien d'extraordinaire il s'agit juste d'une boucle de 1000, et je traite la dataTable directement...

Merci pour vos éventuels remarques, car là je sèche complet...

2 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
13 juil. 2010 à 10:31
Salut,

La datatable est puissante mais consomme beaucoup de mémoire
et n'est peut être pas adaptée à tous les traitements.

Il est preferable d'utiliser un collection générique.
Pourquoi
La datatable gere en plus des données et des états et des evenemements.
Exemple à chaque modification, le rowsatate passe à modifier.
C'est rapide sur des petites tables mais peut etre un peu plus lent sur des grandes tables.

Regardes aussi du coté de linq, il optimise peut etre la manipulation.
Il y a aussi plinq (pour des traitements parralleles)

Bon dev.
0
cyberwaves Messages postés 6 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 14 juillet 2010
14 juil. 2010 à 09:18
bonjour,

merci pour ta reponse qui conforte ma recente decouverte!! lol

en effet lors de differents "essais" de traitements je me suis rendu compte que cette baisse de "performance" etait du à la "liaison" dataGridView <=> DataTable....et qu'en supprimant cette liaison en mettant dataSource à NULL, je pouvais faire autant de traitements voulu dans la dataTable est le tout à une vitesse bien plus digne!!! lol

Du coup sa va tellement vite que lors de l'ouverture du fichier "macro" que j'ouvre pour etre execute sur mon fichier CSV, sa na meme pas le temps de m'afficher ma barre de progression!!! mdrr d'ailleur à ce sujet je ne trouve pas encore de solution pour me permettre d'avoir au moins une petite messageBox afin de prevenir l'utilisateur de l'execution de ce fichier macro...je ne sais pas encore de quel cote cherche...si c'est une histoire de threads ou d'evenement paint de ma messageBox ou quoi que se soit...si vous avez une idee dans quoi je peux orienter mes recherches je suis preneur meme si pour le moment ce n'est pas vraiment trés important...;)

encore merci de votre aide :)
0
Rejoignez-nous