개요

composer 의 auto loader 는 꽤 속도가 빠르지만 PSR-4 표준에 맞게 오토 로딩 룰을 만들 때 name space 와 일치하는 클래스 파일이 존재하는지 파일 시스템을 확인합니다.


이는 속도를 느리게 하지만 새로 클래스가 추가됐을 때 auto loader 구성을 다시 만들 필요가 없어서 개발 환경이 편리해 지는 장점이 있습니다.


하지만 운영 환경에서는 이미 정해진 클래스만 로딩하므로 이 방식을 사용하면 성능이 떨어지는 문제가 있습니다.


composer 는 이를 해결하기 위해 여러 가지 옵션을 제공합니다.

최적화 level 1 Class map 생성

composer 는 PSR-4 오토 로딩을 class map 으로 변환하는 기능을 제공하며 다음중 하나의 방법으로 활성화 할수 있습니다.

  1. composer.json 의 config 항목에 다음 내용 추가합니다. 

    "config": {
            "optimize-autoloader": true,
    CODE
  2. install 이나 update 시 -o, --optimize-autoloader 옵션을 사용합니다.

    composer install -o
    BASH
    composer update -o
    BASH
  3. 커맨드에서 다음 명령을 실행합니다.

    composer dump-autoloader -o 
    BASH


class map 은 다음과 같이 로딩할 클래스를 PHP array 로 만들어 놓으므로 file system 을 확인할 필요없이 빠르게 실행할 수 있습니다.

autoload_classmap.php

<?php

// autoload_classmap.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'App\\Console\\Kernel' => $baseDir . '/app/Console/Kernel.php',
    'App\\Exceptions\\Handler' => $baseDir . '/app/Exceptions/Handler.php',
    'App\\Helpers\\RoleNameConstant' => $baseDir . '/app/Helpers/RoleNameConstant.php',
    'App\\Http\\Controllers\\Api\\UserController' => $baseDir . '/app/Http/Controllers/Api/UserController.php',
    'App\\Http\\Controllers\\Auth\\ConfirmPasswordController' => $baseDir . '/app/Http/Controllers/Auth/ConfirmPasswordController.php',
PHP


최적화 level 2/A


최적화 level 2/B


Ref