Bonjour,
Dans un programme de statistique, je dois passez en revue une certaine quantité de ligne d'une table Oracle pour effectuer des stats.
Il s'agit d'une ré écriture d'un code VB6 donc j'ai les 2 versions pour comparer les performances.
En gros mon code en c# est le suivant :
Sur 120 enregistrement ce code prend environ 10 secondes contre 2 pour son équivalent VB6
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 DbCommand cmdBio; DbDataReader drBio; cmdBio = varGlobals.connection.CreateCommand(); cmdBio.CommandText = "SELECT * FROM bio_contenu WHERE numpat=" + NumPat.ToString() + " AND dtebio < '" + varGlobals.dteEnd.AddDays(31).ToShortDateString() + "' AND dtebio >= (SELECT max(dtebio) FROM bio_contenu WHERE numpat=" + NumPat.ToString() + " AND dtebio <= '" + FirstSeanceDate.Value.ToShortDateString() + "') ORDER BY dtebio DESC"; cmdBio.CommandType = System.Data.CommandType.Text; cmdBio.CommandTimeout = 120; drBio = cmdBio.ExecuteReader(); string sValeur = ""; while (drBio.Read()) { sValeur = drBio.GetValue(drBio.GetOrdinal("compterendu").ToString(); }
En VB6 c'est ADO qui est utilisé avec un client oracle 11 et une DB oracle 11.
En C# j'utilise les classes style DbProviderFactory car j'ai créé une librairie me permettant de me connecter à plusieurs type de DB. Le provinder utilisé dans ce cas provient de la dll system.data.oracleclient (également via un client oracle 11 sur la même db).
Quelqu'un aurait il une idée pour améliorer les performances ?
Partager