[대규모 서비스를 지탱하는 기술] 17장. VB Code와 속도 감각

June·2021년 12월 27일
0

VB Code

VB Code(Variable Byte Code)가 사용된다.

VB Code는 구현 면에서는 간단하고속도가 빨라 손 쉽게 사용할 수 있다. VB Code는 압축 알고리즘이라기 보다는 정수의 부호화 방법중 하나이다

VBCode는 첫 비트가 플래그로 되어있으며, 남은 7비트로 바이너리 부호를 표현한다.

5의 부호를 보면 첫 비트인 1이 '이 정수의 비트열은 이 바이트에서 끝'이라는 플래그로 되어있다. 5는 1바이트로 표현할 수 있다.

130은 2바이트가 필요하다. 첫 바이트의 첫 비트는 0이므로 이 바이트에서 끝나지 않는다. 다음 바이트의 첫 비트가 1이므로 이 바이트에서 끝나는 것을 알 수 있다. 결국 128 + 2로 130으로 복호화 가능하다.

이상으로 작은 숫자를 4바이트가 아닌 더 작은 바이트수로 부호화하는 방법을 알 수 있었다. 단, 정수 "열"을 압축할 경우는 좀더 연구할 필요가 있다.

정렬 완료된 정수를 'Gap'으로 가져가기

그것이 바로 정수 간 차이를 구해서 작은 정수로 표현되도록 바꾸는 것이다.
리스트에 숫자가 오름차순으로 정수가 정렬되어있다면, 처음부터 창리를 구하더라도 역으로 복원이 가능하다.

[3, 5, 20, 21, 23, 76, 77, 78]
-> [3, 2, 15, 1, 2, 53, 1, 1]
이렇게하면 작은 숫자가 나온다. VB Code로 압축할 때 아래 열과 같이 만드는 것이 압축률이 더 높다.

0개의 댓글