cerhu > microsoft.* > microsoft.dotnet

[ Olivier ] (27/12/2005, 14h19)
Bonjour

Juste une petite question relative aux performances.

Actuellement, j'utilise des datatables depuis SQL Server.
Et je travaille avec ces DataTables :

For Each dtr As DataRow In DT.Rows
....
Etc.etc...

Maintenant, si je veux utiliser des collections d'objects, je vais donc
utliser un DataReader et ensuite alimenter mes collections et enfin les
utiliser.

Maintenant en ce qui concerne les perfs, le temps passé a lire avec un
DataReader puis allimenter mes collections par rapport à l'utilisation
directe du datatable
Y a t'il une difference notable ou pas vraiement.
Je précise que le mode déconnecté ne m'est pas utile donc DataSet et
Datatable ne me servent que de "tableaux" ou "Conteneur de tableaux".

Merci
Olivier
Paul Bacelar (28/12/2005, 03h17)
L'ensembles des fonctionnalités de DataSet et DataTable ont un coût.

Un DataReader et une classe collection pourront avoir de bien meilleures
performances qu'un DataSet + DataAdapter.

Mais si vous voulez avoir une ou plusieurs des fonctionnalités d'un DataSet,
qui sont nombreuses et bien pratique, l'implémenter vous même mènera
vraisemblablement à une solution moins optimal que celle utilisant un
DataSet.

[..]
Ambassadeur Kosh (28/12/2005, 09h47)
> Juste une petite question relative aux performances.
> Actuellement, j'utilise des datatables depuis SQL Server.
> Et je travaille avec ces DataTables :


huuh ?

> Maintenant, si je veux utiliser des collections d'objects, je vais donc
> utliser un DataReader et ensuite alimenter mes collections et enfin les
> utiliser.


oui, comme pour une datatable d'ailleurs. on la rempli à partir d'un
DataAdapter qui lui même utilise un reader.

> Maintenant en ce qui concerne les perfs, le temps passé a lire avec un
> DataReader puis allimenter mes collections par rapport à l'utilisation
> directe du datatable


et de une, c'est pas comparable. vous construisez des indexs ? oui, non ?
et de deux, l'etranglement, il est sur le reseau, par sur le processeur.

donc c'est du pipo.

> Je précise que le mode déconnecté ne m'est pas utile donc DataSet et
> Datatable ne me servent que de "tableaux" ou "Conteneur de tableaux".


vous voulez dire que vous n'avez pas besoin de renvoyer vos mises à jour
vers la base ?

le DataSet offre un langage de selection et des possibilités de recherches
via indexs. si vous comparer un Select d'une datatable indexée avec un Find
pourave sur une liste, c'est sur que l'efficactié, y'a pas photo. si vous
comparez la taille en mémoire, la c'est tout vu... donc faut voir ce qu'il
y'a en face
Gilles TOURREAU (04/01/2006, 14h20)
Bonjour Olivier,

En théorie, remplir un tableau avec un DataReader est plus rapide
qu'un DataSet
En effet, lorsque l'on rempli un DataSet, on utilise un mécanisme de
mappage permettant de remplir les bonnes colonnes d'un DataTable qui
proviennent du résultat de ta requête. Le mappage ajoute donc un
temps supplémentaire pour remplir une DataTable.
Deplus, le DataSet prend un peu plus de taille aussi au niveau de la
taille mémoire qu'un simple tableau crée soi-même, car un DataSet
contient de nombreuses informations sur les colonnes, relations,
lignes,..etc et il faut bien stocker tout ce petit monde quelque
part...

Utiliser un DataReader avec des tableaux que l'on rempli soit même
sera normalement plus rapide, et prendra moins de place...

L'utilisation d'un DataSet est utile comme tu l'as dis, pour le mode
déconnecté ou alors pour remplir plusieurs tables afin de travailler
en mémoire avec elles tout en respectant des contraintes
d'intégrités...

Cordialement

Gilles TOURREAU
Discussions similaires
LinkedList ou ArrayList?

Modification ArrayList ?

ArrayList

Hashtable et ArrayList


Fuseau horaire GMT +2. Il est actuellement 12h56. | Privacy Policy