资讯专栏INFORMATION COLUMN

laravel vs lumen 执行对比

lylwyy2016 / 883人阅读

摘要:环境核内存开启性能监控使用生产环境命令进行安装统一执行打印框架执行时间内存最主要差异加载所有文件整理时间线整体执行时间时间改为加载如何动态加载可优化可优化为什么需要复制一份整理时间线整体执行时间时间加载所有文件,差异差异差异差异

环境

centos7 + docker(alpine3.7)

1核

内存2G

php7.1.17

开启opcache

性能监控tideways_xhprof

composer 使用生产环境命令进行安装

composer install --no-dev --optimize-autoloader --prefer-dist

统一执行 vension 打印
框架 执行时间 内存
lumen 8ms 0.4MB
lumen + Facades 8.5ms 0.5MB
lumen + Facades + Eloquent 13ms~14ms 0.8MB
laravel 50ms~60ms 1.6MB
最主要差异:33.667ms

加载所有config文件:6.711ms

Provider register: 5.756ms

Provider boot: 8.048ms

Route Middleware: 9.084ms

terminateMiddleware: 4.068ms

lumen + Facades + Eloquent 整理时间线

整体

执行时间: 13.284ms

cpu时间: 13.1ms

public/index.php

bootstrap/app.php

vendor/autoload.php: 0.617ms

Dotenv load: 1.882ms 改为php加载

Application::__construct: 0.674ms

withFacades: 0.455ms

withEloquent: 5.144ms 如何动态加载?

loadComponent database: 4.931ms

configure: 0.5ms ==可优化==

DatabaseServiceProvider

register: 0.684ms

boot: 0.981ms

PaginationServiceProvider

register: 0.167ms

boot: 2.115ms 可优化

Router::group: 0.215ms

Application::run: 3.758ms

dispatch: 3.479ms

parseIncomingRequest: 2.643ms

Request::capture: 2.007ms

Request::createFromGlobals: 0.984ms

Request::createRequestFromFactory: 0.947ms

Request::initialize: 0.982ms

Request::createFromBase: 1.005ms

Request::duplicate: 0.789ms 为什么需要复制一份?

sendThroughPipeline: 0.826ms

Response::send: 0.263ms

laravel 整理时间线

整体

执行时间:54.3ms

CPU时间:53.2ms

public/index.php

vendor/autoload.php: 0.926ms

bootstrap/app.php

Application::__construct: 1.471ms

registerBaseServiceProviders: 0.708ms

make Kernel: 1.3ms

Request::capture: 1.841ms

kernel::handle: 43.308ms

Kernel::sendRequestThroughRouter: 43.117ms

bootstrap: 28.188ms

Application::bootstrapWith: 28.175ms

LoadEnvironmentVariables::bootstrap: 4.372ms

Dotenv::load: 4.212ms

LoadConfiguration::bootstrap: 6.711ms 加载所有config文件,差异

RegisterFacades::bootstrap: 0.587ms

RegisterProviders::bootstrap: 5.657ms Provider register 差异

Collection::partition: 0.8ms

ProviderRepository::load: 4.250ms

IlluminateAuthAuthServiceProvider

IlluminateCookieCookieServiceProvider

IlluminateDatabaseDatabaseServiceProvider

IlluminateEncryptionEncryptionServiceProvider

IlluminateFilesystemFilesystemServiceProvider

IlluminateFoundationProvidersFoundationServiceProvider

IlluminateNotificationsNotificationServiceProvider

IlluminatePaginationPaginationServiceProvider

IlluminateSessionSessionServiceProvider

IlluminateViewViewServiceProvider

FideloperProxyTrustedProxyServiceProvider

AppProvidersAppServiceProvider

AppProvidersAuthServiceProvider

AppProvidersEventServiceProvider

AppProvidersRouteServiceProvider

BootProviders::bootstrap: 8.048ms Provider boot 差异

array_walk: 7.793ms

Pipeline::then: 14.690ms

Router::dispatch: 12.202ms

findRoute: 1.754ms

runRoute: 10.434ms

runRouteWithinStack: 9.084ms Middleware 差异

Pipeline::then: 8.586ms

prepareResponse: 2.220ms

prepare: 1.6ms

Response::send: 0.591ms

Kernel::terminate: 4.068ms

Kernel::terminateMiddleware: 4.056ms

StartSession::terminate: 0.915ms

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31387.html

相关文章

  • Lumen 初体验(二)

    摘要:的现状目前是版本,是基于开发。入口文件启动文件和配置文件框架的入口文件是。在路由中指定控制器类必须写全命名空间,不然会提示找不到类。目前支持四种数据库系统以及。使用时发生错误,因为在文件中,的默认驱动是。 最近使用 Lumen 做了 2 个业余项目,特此记录和分享一下。 Lumen 的介绍 在使用一项新的技术时,了解其应用场景是首要的事情。 Lumen 的口号:为速度而生的 La...

    Cheriselalala 评论0 收藏0
  • laravel/lumen 使用 redis队列

    摘要:配置项用于配置失败队列任务存放的数据库及数据表。要使用队列驱动,需要在配置文件中配置数据库连接。如果应用使用了,那么可以使用时间或并发来控制队列任务。你可以使用命令运行这个队列进程。如果队列进程意外关闭,它会自动重启启动队列进程。 一、概述 在Web开发中,我们经常会遇到需要批量处理任务的场景,比如群发邮件、秒杀资格获取等,我们将这些耗时或者高并发的操作放到队列中异步执行可以有效缓解系...

    mengbo 评论0 收藏0
  • Lumen用户认证JWT,源码解读

    摘要:如何做用户认证根据文档描述,提供用户认证的接口,他的核心是看守器和提供器,看守器定义怎么认证用户,提供器定义怎么检索用户。 最近的一个PHP项目,上一个项目是采用ThinkPHP来弄的,因为很早就听说过Laravel的大名,所以进了Laravel的官网,意外发现了Lumen,正好我项目是提供API的,所以选择了Lumen,因为是Laravel的精简版,看了几天的Laravel文档,也总...

    AZmake 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<