컴포저 오토로더 최적화(composer auto loader optimization)
개요
composer 의 auto loader 는 꽤 속도가 빠르지만 PSR-4 표준에 맞게 오토 로딩 룰을 만들 때 name space 와 일치하는 클래스 파일이 존재하는지 파일 시스템을 확인합니다.
이는 속도를 느리게 하지만 새로 클래스가 추가됐을 때 auto loader 구성을 다시 만들 필요가 없어서 개발 환경이 편리해 지는 장점이 있습니다.
하지만 운영 환경에서는 이미 정해진 클래스만 로딩하므로 이 방식을 사용하면 성능이 떨어지는 문제가 있습니다.
composer 는 이를 해결하기 위해 여러 가지 옵션을 제공합니다.
최적화 level 1 Class map 생성
composer 는 PSR-4 오토 로딩을 class map 으로 변환하는 기능을 제공하며 다음중 하나의 방법으로 활성화 할수 있습니다.
composer.json 의 config 항목에 다음 내용 추가합니다.
"config": { "optimize-autoloader": true,
install 이나 update 시 -o, --optimize-autoloader 옵션을 사용합니다.
composer install -o
composer update -o
커맨드에서 다음 명령을 실행합니다.
composer dump-autoloader -o
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',