在Laravel 5.2中,如果使用DB门面代替Eloquent ORM,性能会提高多少?
看到2016 版 Laravel 系列入门教程(一)这里有一段话:
Eloquent 是 Laravel 的 ORM,是 Laravel 系统中最强大的地方,没有之一。当初 Laravel 作者在开发第一版的时候花了整整三分之一的时间才搞出来 Eloquent。当然,“欲练此功,必先自宫”,Eloquent 也是 Laravel 中最慢的地方,迄今无法解决。(路由、自动载入、配置分散、视图引发的性能问题都通过缓存几乎彻底解决了)
是否确实如此?用缓存(比如redis)能够解决Laravel的性能问题,除了Eloquent ORM?
如果使用DB门面代替Eloquent ORM,是不是就不需要创建Model了?也就是说MVC变成了VC?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
首先得吐槽,
Laravel
的很多文档都喜欢过度扩张,例如上面这段,Eloquent
和其他PHP
框架中的ORM
都是相似的味道,没有什么特别牛的地方。另外开发ORM
确实花时间不少,主要是因为ORM
中逻辑相对其他组件复杂很多,但你不能说花时间多久感天动地吧……其次,
ORM
不等于Model
,没有ORM
一样可以做Model
,例如我的框架Beaver
(https://github.com/funcuter/beaver)中是设计了Model
的,但至今没上ORM
(如上面说的,ORM
好用,但是性能差,我性能差的东西比较反感)。我设计中是Model
直接操作DB
,绕过ORM
这一层,一样可以实现正常的操作。Model更像是自己拆分出去的模块的一个SQL查询集合,那么这样理解来,要不要用M其实是自己的选择,就像早期的时候SQL语句是直接写在页面上的。如果你那么在乎性能,那么也可以按照楼上说的直接用DB去执行原生的SQL。
不会提高 Laravel的设计思路注定了就是低性能的代名词 纯粹是为了证明php其实也可以用上设计模式,实际上性能属于垫底的,性能跟zf一个级别,其实论设计模式,zf更强一些
不为站队,不为装逼,只是讨论技术问题
https://phphub.org/topics/1396 同样机器配置不同框架实测数据