当前位置:  开发笔记 > 数据库 > 正文

ORM慢吗?有关系吗?

如何解决《ORM慢吗?有关系吗?》经验,为你挑选了5个好方法。

与存储过程相比,我真的很喜欢ORM,但有一件事我担心ORM会因为层次和抽象层而变慢.使用ORM会减慢我的申请吗?或者重要吗?



1> carl..:

是的,这很重要.它使用更多的CPU周期,从而减慢了应用程序的速度.虽然听到了我...

但是,考虑一下:什么更贵?服务器硬件还是其他程序员?通常,服务器硬件比雇用另一个程序员团队便宜.因此,虽然ORM可能会花费您的CPU周期,但您需要少一名程序员来管理您的SQL查询,这通常会降低净成本.

要确定它是否适合您,请计算或确定使用ORM保存的小时数.然后,计算出您在服务器上花了多少钱来支持ORM.将您按小时费率保存的小时数乘以服务器成本.

当然,ORM是否真的为您节省了时间,这是另一场辩论......


我认为额外的CPU周期和层不是问题,而是数据库访问,如果没有很好地优化.现代机器具有足够的CPU功率,但是为简单任务进行数百次SQL往返仍然是个问题.(2013年和2009年均为真)
+1这是一个很好的开始.您还没有在此处解决其他问题,例如延迟要求.根据现有体系结构的可怕程度,添加另一台服务器可能不是一种选择,因为您可能需要雇用人员为尚未解决的问题设计解决方案(例如负载平衡/数据库复制/故障转移,备份来自多个来源等).

2> bobince..:

ORM慢吗?

本质上不是.一些重量级的ORM可以为事物增加一般阻力,但我们并没有谈论数量级减速.

什么确实使ORM慢是天真的使用.如果您正在使用ORM,因为它看起来很简单并且您不知道底层关系数据模型是如何工作的,那么您可以轻松编写对OO程序员来说似乎合理的代码,但会破坏性能.

ORM是一个方便的工具,但你需要低层次的理解(通常来自编写SQL查询)来配合它.

有关系吗?

如果您最终一次为数千个实体中的每个实体执行循环查询,而不是单个快速连接,那么它当然可以.



3> 小智..:

ORM的速度较慢,并且会增加应用程序的开销(除非您特别知道如何解决这些问题,这不是很常见).数据库是最关键的元素,应该围绕它设计Web应用程序.

许多使用Active Record或ORM的OOP框架,通常是开发人员 - 将数据库视为不重要的事后想法,并倾向于将其视为他们并不真正需要学习的东西.但是性能和可扩展性通常会受到影响,因为数据库需要大量征税!

许多大型网络应用程序已经停滞不前,浪费了数百万甚至数月甚至数年的时间,因为他们没有意识到数据库的重要性.数百个具有数百万条记录的并发用户和表需要数据库调优和优化.但我相信这个问题在一些用户和更少的数据中是显而易见的.

为什么开发人员如此害怕在性能关键时学习正确的SQL和调优措施?



4> JasonRShaver..:

在反对使用SqlCe的Windows Mobile 5项目中,我使用ORM模板从使用手动编码对象转换为代码生成(CodeSmith)对象.在此过程中,我的所有数据访问都使用CSLA作为基础层.

直接转换在本地测试中将我的性能提高了32%,几乎所有这些都是更好的访问方法的结果.

在更改之后,我们调整了模板(在Steve Lasker看到PDC的一些SqlCe性能之后),在不到20分钟的时间内,我们的整个数据层得到了极大的改进,我们的平均"慢"调用从460ms变为~20ms.关于ORM的一个很酷的部分是我们只需要实现(和单元测试)这些更改一次,并且所有数据访问代码都已更改.这是一个惊人的节省时间,我们可能节省40个小时或更多.

如上所述,我们确实失去了一些时间,取出了一堆不再需要的"等待"和"进展"对话框.

我使用了一些ORM工具,我可以推荐其中两个:

.NET层

CSLA codegen模板

它们都表现得相当不错,任何性能损失都不明显.



5> rogueg..:

我一直觉得没关系.您应该使用能够使您最有效率,响应变化的任何内容,以及最容易调试和维护的内容.

大多数应用程序永远不需要足够的负载来使ORM和SP之间的差异显着.并且有一些优化可以使ORM更快.

最后,一个编写良好的应用程序将其数据访问与其他所有内容分开,以便将来从ORM切换到可能的任何内容.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有