13
Game Programing Gems [1.10] 간단하고 빠른 비트 배열 2015 – 07 – 02 NHN NEXT 남세현

Game programing gems 1.10

Embed Size (px)

Citation preview

Page 1: Game programing gems 1.10

Game Programing Gems

[1.10]간단하고빠른비트배열2015 – 07 – 02 NHN NEXT 남세현

Page 2: Game programing gems 1.10

간단하고빠른비트배열

비트단위연산

장점 단점

빠른연산 에러, 실수가능성

효율적인용량 컴퓨터의워드크기에의존

Page 3: Game programing gems 1.10

STL를이용한비트배열1. std::bitset<N>

2. std::vector<bool>

Page 4: Game programing gems 1.10

STL를이용한비트배열(1)1. std::bitset<N>◦ Compile때 N에의해고정됨.

◦ 크기는 [N / word 사이즈]◦ 컴파일러마다다를수있음

Page 5: Game programing gems 1.10

std::bitset 기본사용법

Page 6: Game programing gems 1.10

std::bitset 응용 (1)

Page 7: Game programing gems 1.10

std::bitset 응용 (2)

Page 8: Game programing gems 1.10

std::bitset 참고

Page 9: Game programing gems 1.10

STL를이용한비트배열(2)2. std::vector<bool>◦ Runtime때 dynamic하게사용

◦ 일반적인 std::vector와같음◦ Bit단위연산을해야하므로,

std::vector<bool>은 specialized version, 즉라이브러리측에서따로구현해놓음.

Page 10: Game programing gems 1.10

std::vector<bool> 기본및추가된함수

Page 11: Game programing gems 1.10

Endian 문제

요약 : 신경안써도된다.

Page 12: Game programing gems 1.10

Network로보낼땐?1. unsigned char배열로이루어져있다고생각하기.

std::bitset<N> -> unsigned char[(N/8 + 1)]

◦ 패키징(serializaton)만잘해서보내면됨.

Page 13: Game programing gems 1.10

결론C 스타일로비트연산해서관리하지말고◦ Int bit = 0;

bit &= 1 << 3

C++ 스타일로관리하자.◦ std::bitset(N) myBitset;

myBitset[3] = true;

C vs C++? 느려봤짜얼마나느리겠노