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

Dotnet Discussion :

[Tutoriel] Mesure des performances de Linq face à Sql et Entity Framework


Sujet :

Dotnet

  1. #21
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par iberserk Voir le message
    Beaucoups vont dire que c'est subjectif mais oui... tout en majuscule avec undescore, SP_ en prefixe des SP...

    http://sqlpro.developpez.com/cours/standards/
    J'ai fait la même remarque il y a peu, voici ce que m'a répondu Tomlev :


    Citation Envoyé par tomlev Voir le message
    Ouais mais l'article est pas tout neuf, et les conventions, ça peut évoluer...

    C'est vrai que jusqu'ici, en pratique j'ai surtout vu des noms sous la forme décrite dans l'article, mais on voit de plus en plus de noms de tables en CamelCase, notamment dans les articles de Microsoft concernant Entity Framework et les technos qui tournent autour

    De toutes façons une convention, ce n'est pas unique, tout le monde n'est pas obligé d'adopter la même
    Du coup, j'en déduis que les deux sont utilisés...
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  2. #22
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par Er3van Voir le message
    Du coup, j'en déduis que les deux sont utilisés...
    Oui, oui, d'autant qu'en C# CamelCase est la convention (les majuscules ont beaucoup d'importance). Comme le nom de la procédure stockée est repris par Entity Data Model il vaut mieux respecter CamelCase. Un underscore dans le code est "interdit" dans la nomenclature.
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #23
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Et bien je ne suis pas daccord avec lui...

    MICROSOFT, pour toucher les développeurs, tente d'instaurer le CAMEL CASE, et pourquoi?

    Simple... c'est bien pratique quand on génère l'EDMX puisque celui-ci garde par défaut le nom des tables du coups "c'est pas bo ces classes en MAJUSCULE"... c'est tout...

    De toute manière MICROSOFT n'a JAMAIS respecté les normes de nommage quand il s'agit d'intéragir avec .NET...

    Bien avant LINQ, il fallait voir les SP et tables générées pour la gestion utilisateur/membership/profile/role intégrée ASP.NET!
    Avec NVARCHAR et GUID au taquet en plus(sans débattre sur l'utilisation du GUID bien sûr :-))
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  4. #24
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    +1 pour les GUID.

    C'est pas tant l'utilisation de CamelCase dans les procédures stockées qui me gêne, c'est plus dans les index, keys, attributs de table, etc...
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  5. #25
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par iberserk Voir le message
    Et bien je ne suis pas daccord avec lui...
    Grand troll en perspective.

    Bon, pour info, en l’occurrence on parle aussi de PascalCase. Je suis pas trop à cheval là dessus. Perso, en fait, je "PascalCase" (Microsoft) tandis que d'autres "camelCase":
    A vous de voir si vous préférez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.SP_CREATE_CUSTOMER(obj.Id, obj.LastName, obj.FirstName);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.CreateCustomer(obj.Id, obj.LastName, obj.FirstName);
    dans votre code.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #26
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Grand troll en perspective.
    ????

    OK... une des origines de cette convention est que :
    1. Certaines bases de données son en collation CS ou BINAIRE... d'ou l'utilité d'utiliser les MAJUSCULES...
    2. Celà limite l'écriture par des développeurs (ou DBA peu consciencieux...) de requètes avec des CASSES différentes, ce qui maximise l'utilisation du cache, en effet sachez que si vous faites
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      SELECT NOM FROM MATABLE
      et
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      SELECT NOM FROM matable
      et bien vous forcez SQL SERVER à générer deux plans d'executions et à les mettre deux fois en cache...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  7. #27
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    A vous de voir si vous préférez

    db.SP_CREATE_CUSTOMER(obj.Id, obj.LastName, obj.FirstName);
    ou
    db.CreateCustomer(obj.Id, obj.LastName, obj.FirstName);dans votre code.

    A+
    Encore une fois je ne vois pas en quoi le fait de renommer votre SP dans votre DBML est compliqué si c'est ca qui vous gène???
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  8. #28
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par iberserk Voir le message
    sachez que si vous faites
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT NOM FROM MATABLE
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT NOM FROM matable
    et bien vous forcez SQL SERVER à générer deux plans d'executions et à les mettre deux fois en cache...
    En mode troll:
    D'ou l'utilité de prendre un ORM qui fera toujours la requête de la même facon!
    J'ai bon?

  9. #29
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par iberserk Voir le message
    ????
    C'est que parfois dans mon boulot cela a donné lieu à des disputes mémorables
    Citation Envoyé par iberserk Voir le message
    Celà limite l'écriture par des développeurs (ou DBA peu consciencieux...) de requètes avec des CASSES différentes, ce qui maximise l'utilisation du cache, en effet sachez que si vous faites
    Intéressant, je n'y avais jamais songé. Faut vraiment être DBA pour penser à tout ça!
    Sinon, j'imagine que produire un tel document de convention est/était nécessaire parce qu'il n'y n'avait pas d'intellisens. Du coup, en mettant tout le monde en majuscules c'est plus pratique. Par contre, sachant que le renommage n'est pas aussi simple que sous Visual Studio, utilisez tout ces préfixes est un travail de dingue!
    Citation Envoyé par iberserk Voir le message
    Encore une fois je ne vois pas en quoi le fait de renommer votre SP dans votre DBML est compliqué si c'est ca qui vous gène???
    Je n'ai pas vu la possibilité d'ajouter des alias...
    Citation Envoyé par Nathanael Marchand Voir le message
    En mode troll:
    D'ou l'utilité de prendre un ORM qui fera toujours la requête de la même facon!
    J'ai bon?
    +1
    Autre doc: http://msdn.microsoft.com/en-us/libr...72(VS.71).aspx
    "Winter is coming" (ma nouvelle page d'accueil)

  10. #30
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Je n'ai pas vu la possibilité d'ajouter des alias..
    Ah si ok

    Bah alors, tout le monde est heureux!
    "Winter is coming" (ma nouvelle page d'accueil)

  11. #31
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    "Winter is coming" (ma nouvelle page d'accueil)

  12. #32
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.SP_CREATE_CUSTOMER(obj.Id, obj.LastName, obj.FirstName);
    Et pour info, Iberserk me corrigera si je me trompe, mais il me semble que le préfixe "SP" pour les procédures stockées devrait être réservé à la seule utilisation de Microsoft dans SQL Server. Les procédures stockées applicatives doivent être nommée différemment, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.CODE_APPLI_CREATE_CUSTOMER(obj.Id, obj.LastName, obj.FirstName);
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  13. #33
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Nathanael :
    J'ai bon?
    Oui tout à fait...


    Et pour info, Iberserk me corrigera si je me trompe, mais il me semble que le préfixe "SP" pour les procédures stockées devrait être réservé à la seule utilisation de Microsoft dans SQL Server. Les procédures stockées applicatives doivent être nommée différemment, par exemple
    rien ne vous empeche de garder les conventions de nommage CHARP dans votre EDMX.... y compris pour les procédures stockées et fonctions tables (ne les oublions pas...).
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  14. #34
    Invité
    Invité(e)
    Par défaut
    Je vois que ça se discute pas mal.

    Pour ma part je n'ai pas encore eu le temps ce week end pour me plonger dans le tuto.

    Sinon pour ceux qui n'avaient pas assisté à l'après-midi du développement sur Entity Framework chez Microsoft je vous conseille de visionner le webcast ici.
    ça parle de tout et même de l'optimisation des requêtes Linq To Entities dans la partie 9 du webcast et cette partie pourra intéresser plus d'un et c'est vraiement très instructif vu que la plupart du temps on se lance dans EF sans comprendre ce qui passe derrière.

  15. #35
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Merci docteur

    Je vais aller voir ca, je n'ai pas vu cette webcast.
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  16. #36
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Excellentes analyse 'pas besoin d'être un expert SQL pour savoir qu'ici il vaut mieu utiliser l'include: il génère 200000 requêtes sans'
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  17. #37
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Bouhouhouh personne lit mes post
    "Winter is coming" (ma nouvelle page d'accueil)

  18. #38
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Pardon
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  19. #39
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 562
    Points : 859
    Points
    859
    Par défaut
    Bonjour à tous !

    L'article est trés trés interressant mais j'ai 2 ou 3 petites questions.
    Au debut de la sortie de EF, j'ai voulu l'utilisé mais j'ai toujours trouvé des différences de performances par rapport à l'utilisation des Dataset ou des objets ADO.Net (SqlCommand ...). Les temps de chargement pour des petites tables était trés important, bien sur je ne connaissais pas cette techno et je me rend compte aujourd'hui qu'il existe de nombreuses possibilités d'optimisation. L'une d'elle est l'utilisation de procédures stockées, mais quand on a une base d'environ 50 tables, c'est fait tout de meme pas moins de 200 PS qu'il faut créer !!!

    Mes questions :
    • Utilisez vous des PS (CRUD) pour chaque table ou bien attaquez vous directement les tables ?
    • Quelles sont vos optimisations sous EF ?

  20. #40
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Merci pour ton accueil de cet article
    Citation Envoyé par ddaime Voir le message
    c'est fait tout de meme pas moins de 200 PS qu'il faut créer !!!
    Il existe des générateurs de PS pour les opérations du CRUD.
    Citation Envoyé par ddaime Voir le message
    Utilisez vous des PS (CRUD) pour chaque table ou bien attaquez vous directement les tables ?
    Dans la mesure du possible, au regard des résultats, dans tous les cas, il vaut mieux faire des PS dès que c'est possible. C'est effectivement du travail. Cela peut donner des procédures comme: GetUsersByName, GetUserById, GetUsersByTown, etc. Tu peux aussi imaginer faire un UsersSelectAll au démarrage de l'application, mettre les données en cache et faire la recherche par le code. Tu gardes ainsi le jeu de données sur le serveur web et tu ne requêtes plus la base.
    Si on retourne la question: dans quels cas une procédure stockée répond moins bien au besoin? Je dirais toutes les fois où la liste des champs ainsi que les clauses de la requête sont construites par le code. Ces cas là sont assez rares. Cela arrive dans le cas de moteur de recherche je dirais.
    Citation Envoyé par ddaime Voir le message
    Quelles sont vos optimisations sous EF ?
    Finalement, j'utilise assez peu EF Les PS sont une bonne optimisation. Je te suggère de regarder le web cast deuxième lien dans les références: http://immobilis.developpez.com/tuto...amework/#LVIII. On peut en retenir une chose essentielle: ne demander à la base de données que ce dont on a réellement besoin.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/05/2015, 20h15
  2. Mesure des performances d'Apache
    Par yanis97 dans le forum Apache
    Réponses: 2
    Dernier message: 22/12/2009, 16h21
  3. Mauvaise performance avec Linq to sql
    Par Wasrack dans le forum Linq
    Réponses: 2
    Dernier message: 30/09/2009, 08h45
  4. Mesure des performances
    Par DjDavOnline dans le forum OpenCV
    Réponses: 2
    Dernier message: 13/01/2009, 08h20

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