【问题标题】:Laravel performance overheadsLaravel 性能开销
【发布时间】:2023-04-01 12:35:01
【问题描述】:

我正在开始一个新的 PHP 项目,并且正在考虑采用 Laravel。来自 Java / Spring 背景,我很高兴看到一个类似的 MVC / Dependency Injection 框架将 Web 应用程序中通常需要的所有常见内容捆绑在一个结构良好的包中。在设置路由等方面,Laravel 似乎也很容易采用(比 Symfony2 更容易)。

但是,在做了一些进一步的研究之后,我担心这个框架会引入很多性能开销并加载很多我不需要的东西,从而使页面变得比应有的速度慢。 我的应用程序将是一个典型的基于表单的应用程序,具有一些数据库查询和 Javascript/AJAX 作为前端。然而,一项非常重要的非功能性要求是性能。我不希望页面加载一秒钟(只要数据库明显快速响应)。

无论哪种方式,我都打算使用 Smarty(部分是因为我对它有很多经验,部分是因为它比 Blade 有更多的文档记录和更多的功能,而且对我来说语法比 Twig 稍微干净一些),虽然模板引擎真的不是这个问题的重点。

Laravel 真的比使用带有普通 PDO 和 Smarty 模板的 Controller(普通 PHP 脚本)开发页面要慢得多吗? Laravel 与以 Doctrine2 ORM 和 Smarty 模板作为视图的控制器相比呢?

我对这些框架有点陌生,因此非常感谢 Laravel 引入的任何信息、基准或一般性描述(相对于普通 PDO 和相对于 Docrine)。

【问题讨论】:

  • 您来自 Java/Spring 背景...与纯自制 Java 代码相比,您发现使用 Spring 慢了多少?您从使用 Spring 中获得了什么好处?根据框架给您带来的好处而不是性能开销来评估框架的使用,因为性能开销通常是一个虚假的论点,因为它在更大的性能规模(数据库访问等)中可能非常微不足道
  • Laravel + OPcache 相当快,使用 HHVM 可能会更快。
  • 不是你的问题的答案,但很高兴知道 Laravel 4.3(即将发布的版本)将支持路由缓存,这可以减少响应时间(观看 laracasts.com/series/whats-new-in-laravel-4-3/episodes/8
  • @MarkBaker 感谢您的想法。 Java/Spring 是一个不同的故事,因为很多繁重的引导(而且它非常繁重,一个相当大的应用程序很容易花费大量的秒数)是在启动时完成的,而在PHP 在接收页面的 HTTP 请求时做了很多工作,这是我最担心的。当涉及到可维护性和保持代码干净且没有样板时,这些好处显然非常重要(这就是我考虑 Laravel 的原因)。
  • @jbx Laravel 只加载你实际使用的东西,例如,如果你从不使用任何 DB::* 方法或模型,那么所有 ORM 和数据库相关的代码都不会被加载.

标签: php laravel


【解决方案1】:

Laravel 确实比纯 PHP 代码慢,但网络几乎肯定会成为你的瓶颈。

Laravel 的模板引擎 Blade 将它的模板编译成 PHP,所以我不会太担心使用它。至少在我的经验中,Eloquent 是一个比 Doctrine 更小更简单的工具,如果你仍然在 Doctrine 上出售,有一个few things that may help。简而言之,框架开销并不大,我很乐意接受它以换取更快的开发。

【讨论】:

  • 感谢您这么快回答。好吧,无论如何我都习惯使用 MVC,严格使用 PHP 脚本作为“控制器”和模板中的表示逻辑。我只是在考虑采用 Laravel 与旧方法相比有哪些优点。我也不赞成 Doctrine,它只是看起来流行和成熟。
  • 我想说,主要的好处就是不必重新发明轮子。 Laravel 被设计成一个非常“友好”的框架,可以省去很多繁琐的工作。真的,不必编写自己的路由/MVC/模板管理/电子邮件/等系统非常方便。
  • 就我个人而言,我更喜欢 Eloquent 而不是 Doctrine:虽然它有一些怪癖(大多数 ORM 也是如此)Eloquent 顾名思义,即使使用查询生成器,您的查询代码也很干净且易于阅读(如果格式合理);而且我不喜欢 Doctrine 使用注释来定义关系
  • 是的,注解看起来和 JPA 的实体注解几乎一模一样,非常冗长而且让代码看起来很脏。
猜你喜欢
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
相关资源
最近更新 更多