【问题标题】:laravel injection core have any effect in performance?laravel 注入内核对性能有什么影响?
【发布时间】:2018-09-10 04:40:38
【问题描述】:

我通过 serviceProvider 将我的存储库注入到我的控制器中。

问题一: 通过laravel注入核心的反射注入对性能有什么影响?它与在控制器内部创建一个新的实例对象有什么不同吗? 如果我的 serviceProvider 通过 Laravel 的单例模式绑定多个类,会有什么影响?

问题 2: 在单例模式中,是否会在对服务器的每个请求中创建一个对象? 请求完成后,单例对象是销毁还是缓存重用?

【问题讨论】:

  • 对于每个请求,整个堆栈都会再次运行(如果你让应用程序出错,你可以看到糟糕的消息 + 整个堆栈跟踪,所以每次你访问服务器时,这个堆栈都会一遍又一遍地运行)。其全部与 可读性可测试性 有关,而不是性能更高的东西。如果您想获得最先进的性能,请改用 C。

标签: php laravel


【解决方案1】:

关于性能的一般建议是,仅在出现问题时对其进行优化 - 即便如此,也只能在手头有性能指标的情况下进行优化。

至于使用 Laravel 注入容器对性能的影响,这将取决于你如何使用它。

当依赖它的自动装配功能时,您可能确实会看到一些性能损失,因为容器需要使用反射来确定构造对象所需的参数类型。 手动绑定服务可能会更快,在这种情况下,只需要在哈希映射中查找即可。

至于问题2,php在两者中间运行了一下。大多数 php 服务器会使用字节码进行缓存,以便在第一次之后解释会更快。但是 PHP 的构建方式是在请求完成后从内存中删除所有对象。

这可能会导致一些性能损失,但它也是确保没有内存泄漏并很好地符合 HTTP/REST 无状态概念的好方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-22
    • 2015-07-05
    • 2018-11-15
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多