OGNL은 퍼포먼스에 문제가 있었다.
소문으로만 그런줄 알았는데, 실제로 겪고 나니..힘들었다.

일단, request에 같은 setAttribute로 해결을 하였다 다음과 같은 코드 를 보면 알겠지만request에 값이 있으면 OGNL의 value stack을 타지 않고 바로 값을 얻는다.

webwork같은 경우 action에서 가급적이면 request를 가지지 않게 디자인을 잡았기때문에, 맘에 들지는 않았지만, 다음과 같이 코드를 작성하였다.

protected void setAttributeValues() {
       if(request != null){
           request.setAttribute("post", post);
           ..........
       }
}

이 코드는 성능만을 위한 코드이기때문에 request를 setter하지 않아도 action이 돌아갈수 있도록 if문을 추가를 했다. 이런 코드가 중복되어 잇으면 짜증이 나서, 부모로 올리고, protected로 접근자를 선언했다. 일단, 이 코드로 위기를 모면을 했으나, 찜찜함은 어쩔수 없었다.

중요 페이지만 해도 상관은 없었지만, 어쩔 수 없는 코드들이 추잡해보였다. 사실 성능저하는 어플리케이션 전체적으로 영향을 끼친다. 그래서, 우리 팀은 이런 방법으로 해결을 했다.

JDK5.0에서  reflection이 향상되었다는 근거를 가지고, 새로운 시도(?)를 하였다.
1. reflection
2. request에 명시적으로 셋팅

OGNL Performance http://colus.egloos.com/3629495

더욱더 놀라운 사실은 이 방법은 바로 생각이 나지 않았다는 것과 회사에서 일할 때보다는 편히 쉬고, 책상을 떠나있을 때 아이디어가 떠오른다는 것이다.

글을 읽다가 보면 다음과 같은 내용이 나온다.
다음 날 늦잠을 자서 지하철을 타고 출근하는데......... - by EP

10시간 동안 해결이 안되는 것들이 샤워를 하다가 아이디어가 떠오르거나 좋은 설계나 디자인을 생각해내는 것은 자주 있는 일이다. 과도한 업무와 시간에 쫓기다가 보면, 대강 돌아가게 하려는 마음이 생긴다. 나도 이번에 그런 유혹과 스트레스를 이기기 어려웠다.

책상에만 앉아있다고 일을 많이하고, 잘 하는 것은 아니다!!


효율적으로 일하는 방법에 대한 고민을 많이 하게 되는데, 이번 프로젝트를 통해서 좀더 큰 깨달음을 얻었다.

트랙백 보낼 주소 :: http://www.ologist.co.kr/trackback/709

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2007/07/25 14:09
    댓글 주소 수정/삭제 댓글
    처음 한게임쪽에 Lucy를 적용할 때 OGNL 성능 문제가 제기되서 가급적이면 OGNL을 안쓰는 방향으로 갔었죠. struts 1에서 webwork로 가면서 OGNL을 적용하기에는 컨버팅 해야 할 코드가 너무 많기도 했지만요. ^^;

    그 이후로 관심을 안가지고 있었는데, 이 포스팅을 통해서 OGNL 개선 소식도 듣고 reflection을 활용한 재치도 배워갑니다. ^^
  2. 2008/05/23 04:32
    댓글 주소 수정/삭제 댓글
    걸출한 뉴스!! 종류 블로그!
  3. 2008/05/23 05:36
    댓글 주소 수정/삭제 댓글
    걸출한 디자인! 좋은 디자인.
  4. 2008/05/23 06:04
    댓글 주소 수정/삭제 댓글
    이 위치는 아니라 유익한뿐 재미있는다!
  5. 2008/05/23 06:06
    댓글 주소 수정/삭제 댓글
    저에서 유사한 역사는 이었다.
  6. 2008/05/24 01:36
    댓글 주소 수정/삭제 댓글
    좋은 너를 위치! 감사하십시요.
  7. 2008/05/24 01:52
    댓글 주소 수정/삭제 댓글
    일! 우수한 감사!


BLOG main image
OOP and Java by ologist

공지사항

카테고리

All (649)
private!! (106)
WEB & IT (140)
Developer (400)