PropertySet

전산 2004/09/08 06:22
새벽 6시지만 도대체가 잠이 안와서 공상하다 다시 뭔가를 만들고 있다.

GPG 의 PropertySet 은 Property 정보 저장을 위한 hash 가 각각의 인스턴스마다 생성되기 때문에 매번 인스턴스를 생성할 때마다 모든 멤버를 register 해야하는 단점이 있었다.

이것은 1. 저장공간의 낭비 그리고 2. 인스턴스 하나 만들때마다 register 부하 가 걸린다는 단점이 있어서 좀더 진보된 PropertySet 을 생각해 보았다.

아이디어는 아주 간단한데, 같은 타입은 모두 같은 메모리 배열을 따른다는것에 착안, 각 멤버변수가 위치한 offset 정보를 타입별로 하나씩만 유지해 이용하는 것이다.

아래는 int 타입만 지원하는 PropertySet 을 간략히 map 으로 구현해 본 것이다. 대충 만들었는데 뭐 의도대로 잘 동작한다. 컨셉을 대충 구현한 프로토타입 이므로 코드는 전혀 세련되지 않았다. 의사코드로 봐 주시면 될듯. 어쨌든 과외시간에 작성한 코드이므로 공개한다.

설계상의 개선사항들

1. 초기 binding 할때 임시객체가 무조건 필요한데 저것은 상속을 이용해 구현하면 없앨 수 있을듯.
2. RTTI 의 type_info 를 사용하면 getClassName() 따위는 없어도 된다.

코드보기

2004/09/08 06:22 2004/09/08 06:22

트랙백 주소 :: http://testors.net/tt/trackback/146