카테고리 없음

속도VS공간

게임이좋다 2010. 11. 14. 18:21

비트필드를 불리언으로 쓰는게 좋은가에 대한 글을 봤는데.

최근 CPU가 16, 32비트 단위로 일을하는 경우가 많아서 

잘라내고 하는 등 부가적인 처리를 하면

오히려 성능에 나쁘지 않을까 하는 이야기를 봤다.


*일단 비트를 잘라내는 건, 생각보다 쉽다.  미리 준비해둔 마스크( unsigned char maskType=0x0100; )과

AND를 하면 쉽고 빠르게 체크를 할 수 있다. 경우에 따라 여러 플래그를 동시에 체크할 수도 있고.


*한편 CPU속도가 빨라진만큼, 공간을 아끼는게 좋은 경우도 많다.  좋은 예는 동영상과 음성파일이다.

*디아블로2같은 경우, 무기의 성능에 비트단위로 자른 스텟을 붙이는 걸 봤다.

아마 서버에 저장해야되는 아이템의 정보를 절약하려면 필수적인 조치였던거 같다.


*한편, 무작정 공간을 낭비하는 방향을 잡으면 오히려 역효과가 날 수도 있다.

1메가에 넣을 자료를 8메가에 넣고, 1기가에 들어갈 자료를 8기가에 넣는다고 생각해보자.

로딩이나 메모리 복사 등에 걸리는 시간도 길어지고, 메모리 안에서 다 할일도 로딩을 반복해야할 수도 있다.

공간을 희생해서 속도를 얻는다는 목표에서 어긋나게 되는것.

*결국은 프로그램의 용도가 중요하다고 하겠다.  비트단위로 아낄 수 있는 용량이 많다면

써야 될 거고, 득이 크지 않으면 안써야겠지.

*흠.  비트단위로 들어갈 정보를 묶어서 넣는게 일반적이지만, 남는 공간을 활용하는 것도 좋을거 같다.

예를 들어 인간의 나이는 7비트로 충분하다.  남는 1비트를 쓸 수 있는것.