J'ai un code de couche m=E9tier dont l'ex=E9cution est tr=E8s longue alors
qu'il ne fait que comparer des donn=E9es, moins d'un millier. Je
suspecte, les exception try{}catch{} d'=EAtre =E0 l'origine de ce
probl=E8me. Est-ce que qqn peut m'en dire plus sur cette possible
probl=E9matique ?
Après correction du code pour qu'il fasse ce qu'il devait faire, les différences sont de 1.250 à 1.265 en faveur de la version sans try/catch
Sachant que Datetime.Now est precis de l'ordre de 10 a 15 ms on ne peut rien conclure.
C'est une moyenne.
zoltix
Antoine Polatouche wrote:
Michael Moreno a écrit :
Après correction du code pour qu'il fasse ce qu'il devait faire, les différences sont de 1.250 à 1.265 en faveur de la version sans try/catch
Sachant que Datetime.Now est precis de l'ordre de 10 a 15 ms on ne peut rien conclure.
C'est une moyenne.
je viens de faire les tests en modifiant le code pour chez moi chez moi avec une boucle 10000000 qui devrait faire une bonne moyenne et effectivement le résultat ..........
using System;
namespace ConsoleApplication1 { /// <summary> /// Summary description for Class1. /// </summary> class Class1 { static void Main(string[] args) { DateTime dt0 = DateTime.Now; DateTime dt1; TimeSpan ts1 = new TimeSpan(); TimeSpan ts2 = new TimeSpan(); DateTime date;
int i; for (i = 0; i < 10000000; i++) { try { date = DateTime.ParseExact("01092006", "MMddyyyy",null); } catch { date = DateTime.Now; } dt1 = DateTime.Now; ts1 = dt1 - dt0; } dt0 = DateTime.Now; for (i = 0; i < 10000000; i++) { date = DateTime.ParseExact("01092006", "MMddyyyy", null); } dt1 = DateTime.Now; ts2 = dt1 - dt0; Console.Write("with: {0}s {1}msnwithout: {0}s {1}ms", Console.ReadLine(); } } }
with: 12s 463ms without: 12s 463ms
Meme chose..
Antoine Polatouche wrote:
Michael Moreno a écrit :
Après correction du code pour qu'il fasse ce qu'il devait faire, les
différences sont de 1.250 à 1.265 en faveur de la version sans try/catch
Sachant que Datetime.Now est precis de l'ordre de 10 a 15 ms on ne peut
rien conclure.
C'est une moyenne.
je viens de faire les tests en modifiant le code pour chez moi chez moi
avec une boucle 10000000 qui devrait faire une bonne moyenne et
effectivement le résultat ..........
using System;
namespace ConsoleApplication1
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
static void Main(string[] args)
{
DateTime dt0 = DateTime.Now;
DateTime dt1;
TimeSpan ts1 = new TimeSpan();
TimeSpan ts2 = new TimeSpan();
DateTime date;
int i;
for (i = 0; i < 10000000; i++)
{
try
{
date = DateTime.ParseExact("01092006", "MMddyyyy",null);
} catch {
date = DateTime.Now;
}
dt1 = DateTime.Now;
ts1 = dt1 - dt0;
}
dt0 = DateTime.Now;
for (i = 0; i < 10000000; i++)
{
date = DateTime.ParseExact("01092006", "MMddyyyy", null);
}
dt1 = DateTime.Now;
ts2 = dt1 - dt0;
Console.Write("with: {0}s {1}msnwithout: {0}s {1}ms",
Console.ReadLine();
}
}
}
Après correction du code pour qu'il fasse ce qu'il devait faire, les différences sont de 1.250 à 1.265 en faveur de la version sans try/catch
Sachant que Datetime.Now est precis de l'ordre de 10 a 15 ms on ne peut rien conclure.
C'est une moyenne.
je viens de faire les tests en modifiant le code pour chez moi chez moi avec une boucle 10000000 qui devrait faire une bonne moyenne et effectivement le résultat ..........
using System;
namespace ConsoleApplication1 { /// <summary> /// Summary description for Class1. /// </summary> class Class1 { static void Main(string[] args) { DateTime dt0 = DateTime.Now; DateTime dt1; TimeSpan ts1 = new TimeSpan(); TimeSpan ts2 = new TimeSpan(); DateTime date;
int i; for (i = 0; i < 10000000; i++) { try { date = DateTime.ParseExact("01092006", "MMddyyyy",null); } catch { date = DateTime.Now; } dt1 = DateTime.Now; ts1 = dt1 - dt0; } dt0 = DateTime.Now; for (i = 0; i < 10000000; i++) { date = DateTime.ParseExact("01092006", "MMddyyyy", null); } dt1 = DateTime.Now; ts2 = dt1 - dt0; Console.Write("with: {0}s {1}msnwithout: {0}s {1}ms", Console.ReadLine(); } } }
with: 12s 463ms without: 12s 463ms
Meme chose..
Antoine Polatouche
zoltix a écrit :
je viens de faire les tests en modifiant le code pour chez moi chez moi avec une boucle 10000000 qui devrait faire une bonne moyenne et effectivement le résultat ..........
je viens de faire les tests en modifiant le code pour chez moi chez moi
avec une boucle 10000000 qui devrait faire une bonne moyenne et
effectivement le résultat ..........
je viens de faire les tests en modifiant le code pour chez moi chez moi avec une boucle 10000000 qui devrait faire une bonne moyenne et effectivement le résultat ..........
peut être que Ticks ferait mieux l'affaire : http://msdn2.microsoft.com/fr-fr/library/system.datetime.ticks.aspx
Cdt,
P. Manac'h MCS France
"Antoine Polatouche" a écrit dans le message de news: ed6n5t$2lqr$
zoltix a écrit :
je viens de faire les tests en modifiant le code pour chez moi chez moi avec une boucle 10000000 qui devrait faire une bonne moyenne et effectivement le résultat ..........
peut être que Ticks ferait mieux l'affaire :
http://msdn2.microsoft.com/fr-fr/library/system.datetime.ticks.aspx
Cdt,
P. Manac'h
MCS France
"Antoine Polatouche" <antoine@galacsys.com> a écrit dans le message de news:
ed6n5t$2lqr$1@cabale.usenet-fr.net...
zoltix a écrit :
je viens de faire les tests en modifiant le code pour chez moi chez moi
avec une boucle 10000000 qui devrait faire une bonne moyenne et
effectivement le résultat ..........
peut être que Ticks ferait mieux l'affaire : http://msdn2.microsoft.com/fr-fr/library/system.datetime.ticks.aspx
Cdt,
P. Manac'h MCS France
"Antoine Polatouche" a écrit dans le message de news: ed6n5t$2lqr$
zoltix a écrit :
je viens de faire les tests en modifiant le code pour chez moi chez moi avec une boucle 10000000 qui devrait faire une bonne moyenne et effectivement le résultat ..........
peut être que Ticks ferait mieux l'affaire : http://msdn2.microsoft.com/fr-fr/library/system.datetime.ticks.aspx
Pour mesurer des durées de plusieurs secondes, ça n'a pas d'importance. Si il y avait besoin de plus de rigueur, il faudrait plutôt s'assurer que les boucles aient tout le CPU à leur disposition, et que le GC ne se déclenche pas pendant une des boucles ;-)
Patrice Manac'h a écrit :
Bonsoir,
peut être que Ticks ferait mieux l'affaire :
http://msdn2.microsoft.com/fr-fr/library/system.datetime.ticks.aspx
Pour mesurer des durées de plusieurs secondes, ça n'a pas d'importance.
Si il y avait besoin de plus de rigueur, il faudrait plutôt s'assurer
que les boucles aient tout le CPU à leur disposition, et que le GC ne se
déclenche pas pendant une des boucles ;-)
peut être que Ticks ferait mieux l'affaire : http://msdn2.microsoft.com/fr-fr/library/system.datetime.ticks.aspx
Pour mesurer des durées de plusieurs secondes, ça n'a pas d'importance. Si il y avait besoin de plus de rigueur, il faudrait plutôt s'assurer que les boucles aient tout le CPU à leur disposition, et que le GC ne se déclenche pas pendant une des boucles ;-)
Gilles TOURREAU
Antoine Polatouche avait énoncé :
zoltix a écrit :
je viens de faire les tests en modifiant le code pour chez moi chez moi avec une boucle 10000000 qui devrait faire une bonne moyenne et effectivement le résultat ..........
Si vous utilisez le framework 2.0, vous pouvez utiliser le StopWatch de l'assembly System.Diagnostics
Cordialement
-- Gilles TOURREAU Responsable informatique
Société P.O.S Spécialiste en motoculture depuis + de 30 ans ! http://www.pos.fr
Antoine Polatouche avait énoncé :
zoltix a écrit :
je viens de faire les tests en modifiant le code pour chez moi chez moi
avec une boucle 10000000 qui devrait faire une bonne moyenne et
effectivement le résultat ..........
je viens de faire les tests en modifiant le code pour chez moi chez moi avec une boucle 10000000 qui devrait faire une bonne moyenne et effectivement le résultat ..........
Si vous utilisez le framework 2.0, vous pouvez utiliser le StopWatch de l'assembly System.Diagnostics
Cordialement
-- Gilles TOURREAU Responsable informatique
Société P.O.S Spécialiste en motoculture depuis + de 30 ans ! http://www.pos.fr
zoltix
Antoine Polatouche wrote:
zoltix a écrit :
je viens de faire les tests en modifiant le code pour chez moi chez moi avec une boucle 10000000 qui devrait faire une bonne moyenne et effectivement le résultat ..........
je ne comprends plus bien ........; donc ca influance quand meme ?....
Antoine Polatouche wrote:
zoltix a écrit :
je viens de faire les tests en modifiant le code pour chez moi chez moi
avec une boucle 10000000 qui devrait faire une bonne moyenne et
effectivement le résultat ..........
je viens de faire les tests en modifiant le code pour chez moi chez moi avec une boucle 10000000 qui devrait faire une bonne moyenne et effectivement le résultat ..........
je ne comprends plus bien ........; donc ca influance quand meme ?....
Antoine Polatouche
zoltix a écrit :
Voici mes résultalts ........... with: 3s 74ms without: 1s 301ms
je ne comprends plus bien ........; donc ca influance quand meme ?....
Tu as ça en faisant plusieurs fois le test ? Sur ma machine, ce sont des temps comparables, des fois c'est avac le try/catch que c'est le plus rapide, mais en moyenne c'est 1% plus rapide sans.
zoltix a écrit :
Voici mes résultalts ...........
with: 3s 74ms
without: 1s 301ms
je ne comprends plus bien ........; donc ca influance quand meme ?....
Tu as ça en faisant plusieurs fois le test ?
Sur ma machine, ce sont des temps comparables, des fois c'est avac le
try/catch que c'est le plus rapide, mais en moyenne c'est 1% plus rapide
sans.
Voici mes résultalts ........... with: 3s 74ms without: 1s 301ms
je ne comprends plus bien ........; donc ca influance quand meme ?....
Tu as ça en faisant plusieurs fois le test ? Sur ma machine, ce sont des temps comparables, des fois c'est avac le try/catch que c'est le plus rapide, mais en moyenne c'est 1% plus rapide sans.