IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linq Discussion :

Mauvaise performance avec Linq to sql


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 23
    Par défaut Mauvaise performance avec Linq to sql
    Bonjour,

    J’ai fait une application de test de performance de Linq To SQL afin de comparer sa rapidité avec une Dal « maison ».
    Lors des résultats je constate une nette différence les deux. Tellement grande que je me demande si il n’y a pas quelque chose qui m’a échapper.

    Voici le code pour évaluer la rapidité d’une suppression massive de 10000 entrées.

    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
    19
    20
     
    Stopwatch _time = new Stopwatch();     
     
    DemoDataContext _dataContext = new DemoDataContext();
     
    // Une requete pour prendre tout ce qui ce trouve dans la base.
    // mais dans une vrai application on trouvera une condition en plus bien sur.
    var requete = from eleve in _dataContext.eleves
                       select eleve;
     
    _time.Start();
     
    _dataContext.eleves.DeleteAllOnSubmit(requete);
    _dataContext.SubmitChanges();
     
    _time.Stop();
     
    Console.WriteLine("Temps pour supprimer en millisecondes:");
    Console.WriteLine(_time.ElapsedMilliseconds);
    Console.ReadLine();
    En résultat j’obtiens 8000 ms pour linq alors que la Dal « Maison » ne prend que 1500 ms.
    Les mêmes rapports se retrouvent lorsque j’effectue une création de 10000 entrées ou une mise à jour de 10000 entrées.

    Y-a-t’il une autre manière de faire qui permettrai d’avoir de meilleurs résultat ?

  2. #2
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut
    salut
    tu peux utiliser les requêtes pré-compilées , ce genre de requêtes optimise beaucoup les performances de LINQ for SQL.
    voici un petit exemple dans ce tutoriel
    http://blogs.msdn.com/vbteam/archive...rformance.aspx

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 23
    Par défaut
    Oui j'ai eu l'occasion de tester les requetes pré-compilées et en effet c'est plustôt rapide.

    Toutefois mon problème se situe dans les commandes ("InsertOnSubmit", "DeleteOnSubmit"...); en fait dés que je lance la méthode SubmitChange() de mon DataContext.

Discussions similaires

  1. Utiliser WCF avec Linq To SQL
    Par Digilougm dans le forum Services Web
    Réponses: 6
    Dernier message: 10/01/2011, 13h53
  2. bd access avec Linq To SQL
    Par Squal55 dans le forum Linq
    Réponses: 2
    Dernier message: 14/05/2010, 20h25
  3. Trier une liste avec LINQ to SQL
    Par anthride dans le forum Linq
    Réponses: 2
    Dernier message: 12/02/2010, 10h40
  4. Verouiller un enregistrement avec linq to sql
    Par boby62423 dans le forum Linq
    Réponses: 10
    Dernier message: 29/04/2009, 13h34
  5. architecture multi couche avec Linq to SQL
    Par Henry9 dans le forum Débuter
    Réponses: 6
    Dernier message: 17/04/2009, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo