ORM coût de performances
Quelqu'un a une expérience qui indique quel type de performance atteint un développeur pourrait s'attendre en choisissant d'utiliser un ORM (dans Django, RoR, SQLAlechemy, etc) au cours de SQL et de la main-conception de bases de données? J'imagine qu'il y a de compliquer les questions, y compris si la spécification d'une base de données en respectant les contraintes d'un ORM augmente ou diminue les chances de créer une base de données efficace de la structure (basé sur le développeur du niveau d'expérience), et la question de savoir comment bien le développeur construit SQL ou ORM à base de requêtes (sur la base de son expérience). Toutes les informations au sujet de ces intrinsèque ou les problèmes de performance serait vraiment intéressant pour moi.
- vous pourriez également de ne pas utiliser l'un et utiliser ceci: valueinjecter.codeplex.com/... c'est presque comme un orm, mais vous avez le plein contrôle sur tout
Vous devez vous connecter pour publier un commentaire.
Mon conseil est de ne pas vous inquiéter à ce sujet jusqu'à ce que vous avez besoin à ne pas optimiser prématurément. Un ORM peut fournir de nombreux avantages pour le développement de la vitesse, de la lisibilité du code et peut supprimer un grand nombre de répétition de code. Je vous conseille d'utiliser un si il va rendre votre application plus facile à développer.
Comme vous le progrès à travers le développement de l'utilisation de repères et de profilage pour déterminer les goulots d'étranglement dans le code et, si nécessaire, vous pouvez ignorer l'ORM et l'utilisation manuelle des requêtes où ils sont requis. Normalement, vous serez en mesure d'améliorer la vitesse de l'ORM en utilisant la mise en cache et l'index de base de données (entre autres choses), et ensuite vous pouvez décider de l'endroit où manuel requêtes sont nécessaires. Pour la plupart, l'ORM rendement probable de l'acceptable et les avantages de l'utilisation, il sera emportent de loin sur le coût de performance.
La Performance a toujours été après avoir pensé à la plupart de la Couche DAL développement /architecture. Je pense qu'il est temps de nous interroger sur la performance de ces outils ORM, pour la soi-disant facilité de développement qu'ils promettent:
Les 2 plus grands domaines de problèmes de performances dans les Formulaires sont:
Incapacité d'écrire Optimale SQL. Vous devez utiliser un Objet Langage de Requête qui est interprété en SQL par le cadre. Surtout, il est bon de SQL, mais assez souvent il n'est pas le plus efficace SQL.
Réflexion. La plupart des frameworks ORM utiliser la Réflexion pour alimenter des objets avec des Données provenant de la base de données. La réflexion opérations sont coûteuses, et avec l'augmentation du nombre de charge et de données, la dégradation des performances devient évident.
D'autres problèmes de performances qui surgissent en raison de l'inefficacité de la Conception de Base de données ou d'une Entité de conception de Modèle en raison du couplage des objets de l'Entité à des Tables.
Il dépend aussi de ce que vous utilisez comme un ORM. Dans mon expérience, Hibernate est un porc, en termes de vitesse, de l'utilisation des ressources et le temps de démarrage. LINQ to SQL, d'autre part, est une extrêmement léger SQL wrapper, dont l'impact vous seriez probablement à peine (le cas échéant) de l'avis.
Cela va beaucoup dépendre de la ce que vous la comparez avec. Le programmeur écrit de la main de code est un total de hack, il pourrait être un avantage plutôt qu'un hit. Clairement, il peut aller dans l'autre sens aussi.
Performance - son toujours des pro et des contre. Si vous profond profond dans l'ORM architecture (voir mon article: éviter ORM mauvaises habitudes) alors vous allez trouver intuitivement les moyens de le rendre plus rapide. Voici mon autre article sur la façon de faire EF6x 5x plus rapide (au moins pour lire les situations): EF6.x 5x plus rapide
, De toute façon, pour de bonnes performances, même avec l'ORM vous aurez besoin pour créer des vues de base de données, index, comme pour vérifier les requêtes qui sont généré et exécuté par l'ORM et d'affiner leur trop. Désireux de chargement est un must avec de l'ORM.