composer.json autoload에서 classmap vs psr-0, psr-4 어떤 것이 더 좋은 가?

PSR vs Classmap

  • PSR-4 와 Classmap 의 차이는 무엇일까? 라는 질문을 받아보고 저도 잘 모르는 초심자이기에 검색을 해보았습니다.
  • 제가 찾아본 것은 PSR-0 vs Classmap 이었지만 PSR-4와 비교가 크게 다르지는 않을 것 같습니다.

성능 상의 차이로는 어떤 가?

  • 일단 classmap 이 더 빠르다고 합니다. 특별히 vendor/composer/autoload_classmap.php 에 array를 불러올 때 메모리 상의
    문제가 될정도로 array가 크지 않다면 별일 없이 classmap이 더 빠르다고 합니다.
  • 정확한 동작 원리는 모르겠으나, classmap이 좀 더 구체적(?)으로 해당 경로 안의 클래스들 전부와 특정 파일의 경로를 기록을 해주고,
    PSR은 해당 네임스페이스만을 특정 경로와 기록해줍니다.
  • PSR은 지정 후 composer dump-autoload 를 한번 해준 후에는 그 네임스페이스에 클래스를 추가하거나 삭제해도
    재 dump-autoload 없이 사용할 수 있습니다. 개발 시 유연하게 쓸 수 있는 장점이 있습니다.
  • 그룹을 지어서 매우 자주 쓰는 클래스의 경우 Classmap, 자주 쓰지 않는 클래스는 PSR을 이용하라는 내용이 있습니다. 하나의 Request당 클래스 맵의 클래스들이( vendor/composer/autoload_classmap.php를 말하는 듯 합니다.) 10%도 사용되지 않는 다면 클래스맵이 느려질 수 있다고 합니다.
  • 그렇게 규모가 크지 않은 서비스라고 하면, 라이브러리, 모듈을 그렇게 많이 쓰지 않는 다면 PSR을 쓰는 게 작업이 편합니다.
  • 참고 링크 : http://laravel.io/forum/02-20-2014-psr-0-autoloading-vs-classmap-rules-which-is-better-for-large-libraries
  • 참고 링크2 : http://stackoverflow.com/a/22823995
  • 틀린 부분이 있으면 말씀주세요.
comments powered by Disqus