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

Framework .NET Discussion :

[EF] Cast couteux en temps


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut [EF] Cast couteux en temps
    Bonjour,

    Ma question va paraitre un peu simple ou que (trop) récurrente mais je ne trouve pas de solution miracle (peut être, n'y en a -t-il pas).

    Alors j'essaye d'optimiser une application WPF. Et au cours de l'analyse, j'ai remarqué que les opérations couteuses en temps étaient essentiellement du à l'interaction base de données qu'à la techno elle même.

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim requete = From clients In _context.Clients _
                            Select clients
    Dim observableColl = requete.ToList
    Je vous affiche donc un code assez simple et j'ai remarqué que la requête en elle même me prenais quelques dixièmes de secondes. Parcontre le Cast me coute 5 à 6 secondes.

    Pour infos, ma table contient 20000 entrées environ.

    Est ce qu'il y a moyen d'optimiser (sans passer par un cast ?) ou dois je faire sans EF ?

    Merci d'avance pour votre aide.



    Edit : Pour infos, le test de la requête sous SQL Server me donne moins de 3 secondes
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  2. #2
    Membre éprouvé Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    Bonjour,

    en fait, ce n'est pas le 'cast' qui prend du temps, c'est bien la requete, c'est juste qu'elle n'est évaluée qu'au moment où tu te sers des résultats, donc seulement à l'appel à ToList, dans ton cas.

    Quand il (le compilateur ?) évalue ta première ligne, il construit juste une expression qu'il pourra exécuter plus tard.

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par Thrud Voir le message
    Bonjour,

    en fait, ce n'est pas le 'cast' qui prend du temps, c'est bien la requete, c'est juste qu'elle n'est évaluée qu'au moment où tu te sers des résultats, donc seulement à l'appel à ToList, dans ton cas.

    Quand il (le compilateur ?) évalue ta première ligne, il construit juste une expression qu'il pourra exécuter plus tard.
    Je m'en doutais bien en fait ça aurait été trop beau des requêtes aussi rapide.

    Pour améliorer le temps d'exécution, je ne vois que la simplification des objets du modèles (moins de paramètres, ...).
    J'ai comparé EF à DataSet et la différence se fait aussi sentir lors du INotifyPropertyChanged. Il est plus rapide de mettre à jour une DataTable qu'une ObservableCollection (bon cette partie touche plus à WPF que EF en lui-même.

    Merci pour ta réponse Thrud, au peu de réponse que l'on me propose, j'ai bien peur qu'il n'y ait pas de solution miracle à ce niveau (je m'en doutais un peu)
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

Discussions similaires

  1. [2005] Temps exécution avec condition sur un CAST
    Par afrodje dans le forum Développement
    Réponses: 6
    Dernier message: 14/03/2013, 10h27
  2. Arrêter un prog si temps de connexion trop long
    Par jakouz dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2002, 18h28
  3. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  4. temps d'un mp3
    Par CorO dans le forum Langage
    Réponses: 6
    Dernier message: 15/09/2002, 18h43
  5. repertoire temp dynamique
    Par killpilot dans le forum C
    Réponses: 2
    Dernier message: 26/04/2002, 16h19

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