Skip to content

classes 폴더 내의 주요 클래스에 autoload 적용#1374

Merged
4 commits merged into
xpressengine:developfrom
kijin:feature/autoload
May 27, 2015
Merged

classes 폴더 내의 주요 클래스에 autoload 적용#1374
4 commits merged into
xpressengine:developfrom
kijin:feature/autoload

Conversation

@kijin

@kijin kijin commented Apr 4, 2015

Copy link
Copy Markdown
Contributor

제목 그대로입니다. 상당히 오랫동안 TODO라고 되어 있기에 한번 고쳐보았습니다. 불필요한 클래스 로딩을 조금이라도 줄여서 XE 성능 향상에 도움이 되었으면 합니다.

PHP 5.3 이상에서 autoload 콜백을 정의할 때는 클로져를 활용하는 것이 가장 좋은 방법이지만, PHP 버전이 충분한지 확인하기도 전에 문법 오류를 뿜어서는 곤란하겠기에 클로져를 사용하지 않고 그냥 함수를 선언했습니다.

@kijin

kijin commented Apr 6, 2015

Copy link
Copy Markdown
Contributor Author

classes 폴더 내의 클래스들 뿐만 아니라 모든 모듈 (컨트롤러, 모델, 뷰, api, wap, mobile 등) 클래스 로딩에도 autoload를 사용할 수 있도록 해보았습니다.

@kijin

kijin commented Apr 7, 2015

Copy link
Copy Markdown
Contributor Author

DB 핸들러 및 XML 파서에서 무조건 다 인클루드되는 파일들도 autoload로 전환했습니다. 아직도 몇 군데 require가 하드코딩되어 있지만, 대부분 해당 클래스가 당장 필요해서 로딩하는 것이므로 이것까지 일일이 다 찾아서 지울 필요는 없을 것 같습니다.

제 테스트 서버에서는 메인화면 기준 get_declared_classes() 결과가 261개에서 239개로 줄어듭니다. 그 중 PHP에서 기본으로 정의된 클래스가 170개이므로, 실제 XE에서 로딩하는 클래스 수는 91개에서 67개로 약 26% 감소 효과가 있습니다. 게시판 목록 페이지에서는 96개에서 74개로 약 23% 감소 효과가 있네요. (정확한 클래스 수는 설치된 모듈과 애드온, 캐싱 방식에 따라 달라질 수 있습니다.)

상당히 빠른 서버에 PHP 5.5이기 때문에 딱히 로딩 속도가 빨라지는 것이 느껴지지는 않지만, 서버 사양이 좋지 않거나 PHP 버전이 낮은 경우에는 불필요한 파일 로딩을 줄여서 상당한 성능 개선 효과가 있을지도 모르겠습니다.

@ghost ghost modified the milestone: next-2015-19 Apr 17, 2015
@ghost ghost modified the milestones: next-2015-19, next-2015-24 May 4, 2015
@ghost ghost added the type/enhancement label May 4, 2015
@ghost ghost self-assigned this May 4, 2015
ghost pushed a commit that referenced this pull request May 27, 2015
classes 폴더 내의 주요 클래스에 autoload 적용
@ghost ghost merged commit 58f094a into xpressengine:develop May 27, 2015
ghost pushed a commit that referenced this pull request May 28, 2015
- composer autoload 추가
- load time 측정 오류 수정
- 대문자를 포함한 모듈명에 대한 호환성 문제 수정
@kijin kijin deleted the feature/autoload branch May 29, 2015 01:45
@ghost ghost added the merged-pull-request label Jun 3, 2015
YJSoft referenced this pull request in YJSoft/xe-core-old Jun 12, 2015
- composer autoload 추가
- load time 측정 오류 수정
- 대문자를 포함한 모듈명에 대한 호환성 문제 수정
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant