XETOWN

질문/답변

웹에 관련된 질문과 답변을 나눌 수 있습니다.

가령 A = 게시판, B = 알림 관리, C = 관리자 패널... 이라고 할때, ABC를 모두 포함한 모듈을 제작하고 있습니다.

 

확실히 모듈화 측면에서 보면 말도 안되는 개발이지만 개발 시일이 촉박해서 그렇게 만들고 있습니다.

 

제가 궁금한 것은 이렇게 큰 모듈을 만드는게 성능상 불이익을 받을 수 있는가 입니다. 

 

  • ?
    후하니 2016.12.27 07:45:12

    한 사이트에서 쓸꺼면 그냥 합치는게 낫지 않을까요?
    저라면 합칠듯 합니다.

  • profile
    투정 2016.12.27 07:49:23
    일단은 한 사이트에서 쓸거지만 향후 유사한 상황에서도 재사용을 하고 싶습니다. 사실 패키지 성격이고 내부적으로만 종속이 되기 때문에 굳이 쪼개서 번거롭게 할 필요성을 못 느끼긴 합니다. 하지만 성능상 이점이 있나 싶어서 여쭤봅니다.
  • ?
    후하니 2016.12.27 07:51:05

    php에서 성능이야 해괴하게 짜지 않거나 기가막힌 알고리즘을 짜지 않는 이상 별 차이 없지 않을까 싶네요

  • profile
    투정 2016.12.27 07:55:03
    답변 고맙습니다.
  • profile
    레믹스 2016.12.27 08:26:15
    음... 큰 모듈을 만들면 그만큼 함수 정의가 많아지니 아주아주아주~ 조금은 성능차이가 있겠죠.
    별 차이가 없을것 같긴 하지만요.
  • profile
    기진곰 2016.12.27 10:37:01

    XE에서는 controller, model, view (+admin, mobile, api) 정도밖에 구분하지 않기 때문에 이 구조 안에서 많은 기능을 넣으면 파일 하나에 몇천 줄씩 들어가게 됩니다. 파일이 커질수록 현재 페이지와 무관한 코드를 많이 로딩하게 되니 성능이 안 좋아지는 건 당연하고요. 특히 트리거가 들어가는 파일이 커지면 전혀 상관없는 페이지에서도 부담이 커집니다.

    코드 복붙을 최소화하고 공통 기능을 별도의 함수로 빼내면 많이 절약이 되지만 이것도 한계가 있고, 결국 어느 시점에선가 파일을 쪼개야 합니다. 그러나 여러 모듈로 쪼갤 필요는 없다고 생각해요. 한 모듈 안에서도 XE에서 기본으로 제공하는 구조 외에 얼마든지 파일을 만들 수 있고, 꼭 필요한 곳에서만 include_once를 사용하거나 spl_autoload_register로 끌어다 쓸 수 있으니까요.

    이런 방법으로 많은 파일을 그때그때 불러다 쓰는 예로는 고급 메일 발송 모듈이 있습니다. 트리거가 들어가는 파일은 몇 줄 없지만, 메일을 보내려고 하면 어마어마하게 많은 파일이 쓱~ 인클루드되지요.
    https://github.com/kijin/xe-advanced-mailer

  • profile
    투정 2016.12.27 12:19:06
    도움이 정말 많이 되었습니다. 감사합니다.
  • profile
    투정 2016.12.27 12:16:41
    음... @기진곰님 이 트리거 말씀을 하셔서 module.handler를 보고 있는데, 일단 모듈의 기본 MVC는 최대한 다이어트를 하는게 조금이라도 속도를 빨라지게 하는 핵심같네요.

    클래스 파일의 줄 수 자체의 문제보다도 트리거 실행을 위해 getModule로 모듈의 함수들을 다 끌어와서 인스턴스를 만드는데 이게 속도를 느려지게 할 수 있을 것 같습니다. method_exists도 중복이 되고 있네요.
  • profile
    기진곰 2016.12.27 12:17:46

    네, 트리거 실행시 상당히 많은 것이 로딩됩니다. 만약 모듈을 분리하신다면 트리거만 따로 모으는 것도 성능을 개선하는 한 방법이 될 수 있습니다.

  • profile
    투정 2016.12.27 12:20:44

    아... 그럴 수도 있겠네요. 근데 지금 생각해보니까 아예 트리거 전용 클래스로 가령 document.trigger.php를 만들어놓으면 트리거 불러오는데에 getModuleInstance까지 쓸 필요도 없을 것 같은데...

     

    아니면 그냥 trigger 디렉토리를 따로 파서 그 안에 trigger_name.php 이런 식으로 트리거를 모아놓거나요.

  • profile
    투정 2016.12.27 12:25:03
    아무튼 트리거 부분 지금 살펴보니까 개선의 여지가 상당히 있는 것 같습니다. 고수분들이 손 좀 봐주셨으면 하는 바램입니다.

    전 이만 의뢰받은 모듈 마저 만들러 가보겠습니다 ㅠㅠ

List of Articles
번호 제목 글쓴이 날짜
공지 답변을 확실히 받기위한 질문자 지침서 21 람보 2015.12.31
3541 폰트 적용 순서를 어떻게 바꾸나요? 1 file 라그릿 2016.12.27
3540 nginx 에러로그 문제 라그릿 2016.12.27
3539 닷홈 무제한 호스팅 질문드립니다. 1 file Overachiever 2016.12.27
3538 .soo_maps 이 없다면 이라는 조건을 걸고 싶습니다. 5 웹지기 2016.12.27
» 모듈을 크게 만드는게 좋을까요 아니면 기능별로 잘게 쪼개는게 성능상 좋을까요? 11 투정 2016.12.27
3536 php7 질문좀할게요 (추가) 8 Jack 2016.12.27
3535 똥글 남기기(삭제글 댓글 남기기)모듈 관련 질문입니다. 댓글 삭제시 포인트차감 추가... 23 웹지기 2016.12.26
3534 현재 라이믹스에서 php 7.1 호환성 문제 어떤 것들이 있나요? 9 기븐 2016.12.26
3533 스케치북 게시판 메뉴얼 6 lis**** 2016.12.25
3532 소셜로그인 으로 하면 6 떡보의하루 2016.12.25
3531 공홈에 댓글수정 간략화 팁? 2 해태맛동산 2016.12.24
3530 소셜로그인 갑자기 또다른에러 file 낙타 2016.12.24
3529 소셜로그인 질문합니다 2 1 file 낙타 2016.12.24
3528 안녕하세요? 너무 두서 없었던것 같아 다시 문의 남깁니다. 19 이민혜 2016.12.23
3527 메뉴에 새글 표시 모듈 사용 시 에러가 납니다 ㅠ 2 Hafree 2016.12.23
3526 배포된 자료를 수정하여 특정 확장변수 변경 하는것 해보았는데.,, 안되네요... 3 이민혜 2016.12.23
3525 그룹 랭킹을 구현할 수 있는 방법 없을까요?? 3 keh**** 2016.12.23
3524 파일저장되는 하드변경하는법? 7 해태맛동산 2016.12.23
3523 게시글 확장변수를 view_document.html 에서 변경 처리하기 8 이민혜 2016.12.23
3522 xe ip주소를 md5로 하면 암호화되서 뜨는걸 알았습니다, 관리자한테는 정상적으로 보이게 어떻게하나요? 6 라그릿 2016.12.23
Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 ... 190 Next
/ 190
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...