EgovPropertyServiceImpl thread safe관련 문의
- 작성자 :
- 전*성
- 작성일 :
- 2010-11-27 00:55:31
- 조회수 :
- 2,857
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
저희 프레임워크에서는 property파일을 읽기 위하여
EgovPropertyServiceImpl라는 전자정부에서 제공하는 클래스를 사용합니다.
현재 성능 테스트 중 property를 사용하는 부분에서 병목현상이 발생해서 해당 소스를 확인 해 보니 해당 클래스는 apache의 ExtendedProperties를 사용하는데 ExtendedProperties는 Hashtable를 extend하고 있는것으로 확인하였습니다.
Hashtable는 thread safe라서 병렬 작업 시 상당히 느리게 동작할 것으로 보입니다. 그래서 테스트를 수행 해 보았습니다.
100개의 thread에서 10000번씩 100개의 데이타가 들어있는 map에서 값을 얻는 테스트를 수행해 보았는데, HashMap이 4배 정도 빠른것으로 확인되었습니다.
property는 대부분 시스템 load시 초기화 되고, 이후 다른 thread에 의해서 수정되는 일이 많지 않습니다. 따라서 thread safe하지 않아도 될 것으로 보입니다. 혹시 저희가 몰라서 thread safe인 property implemented class를 사용하고 있는것인지, 아니면 현재 스펙이 그것인지 확인좀 부탁드리겠습니다.
만약 후자라면 모듈이 개선이 가능할지도 답변 부탁드리겠습니다.
EgovPropertyServiceImpl라는 전자정부에서 제공하는 클래스를 사용합니다.
현재 성능 테스트 중 property를 사용하는 부분에서 병목현상이 발생해서 해당 소스를 확인 해 보니 해당 클래스는 apache의 ExtendedProperties를 사용하는데 ExtendedProperties는 Hashtable를 extend하고 있는것으로 확인하였습니다.
Hashtable는 thread safe라서 병렬 작업 시 상당히 느리게 동작할 것으로 보입니다. 그래서 테스트를 수행 해 보았습니다.
100개의 thread에서 10000번씩 100개의 데이타가 들어있는 map에서 값을 얻는 테스트를 수행해 보았는데, HashMap이 4배 정도 빠른것으로 확인되었습니다.
property는 대부분 시스템 load시 초기화 되고, 이후 다른 thread에 의해서 수정되는 일이 많지 않습니다. 따라서 thread safe하지 않아도 될 것으로 보입니다. 혹시 저희가 몰라서 thread safe인 property implemented class를 사용하고 있는것인지, 아니면 현재 스펙이 그것인지 확인좀 부탁드리겠습니다.
만약 후자라면 모듈이 개선이 가능할지도 답변 부탁드리겠습니다.
A
안녕하세요.. 전우성님..
Property 서비스는 refresh될 수 있는 서비스로 thread-safe도 고려되었습니다.
따라서 성능이 중요한 경우는 JDK의 Properties 등을 활용하시면 될 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
Property 서비스는 refresh될 수 있는 서비스로 thread-safe도 고려되었습니다.
따라서 성능이 중요한 경우는 JDK의 Properties 등을 활용하시면 될 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.