LZ4 1.10, 압축 속도를 메모리 대역까지 끌어올린 공개 알고리즘

요약

LZ4 는 자료가 기다릴 수 없는 경로를 위해 만들어진 공개 무손실 압축 라이브러리다. 코어 하나로 압축은 500 MB/s 를 넘고, 푸는 쪽은 코어당 수 GB/s 에 이르러 대개 메모리 대역에서 한계를 만난다. 압축률을 내주고 실시간 경로에 들어갈 만큼 낮은 지연을 얻었으며, 1.10.0 판은 다중 스레드를 정식 지원으로 올렸다.

추천
이름
LZ4
버전
1.10
요금
무료
오픈소스
오픈소스
운영체제
WindowsmacOSLinux
공식 사이트
https://lz4.github.io/lz4/
업데이트
2026-10-06 15:42

속도가 전부가 되는 자리

자료 저장소가 기록을 쓰고, 메시지 줄이 틀을 나르고, 게임 엔진이 자원을 디스크에서 끌어올린다. 그런 경로에서는 자료가 압축 알고리즘이 생각할 때까지 앉아 기다릴 수 없다. 이 라이브러리는 바로 그 순간을 위해 만들어졌다. 공개된 무손실 압축 라이브러리로, 코어 하나에서 500 MB/s 를 넘겨 압축하고 푸는 쪽은 코어당 수 GB/s 에 이른다. 실제로는 알고리즘이 아니라 메모리 대역이라는 벽에 부딪힌다.

맞바꿈은 분명히 적혀 있다. 압축률을 내주고, 돌아오는 것은 실시간 경로에 들어갈 만큼 낮은 지연이다. 설계는 그것뿐이고, 그래서 디스크가 얼마나 줄었는지 아무도 세지 않는 자리에 이 라이브러리가 나타난다.

압축 라이브러리의 프로젝트 페이지

빠르지만, 여유는 남겨 두었다

압축률이 시계보다 중요한 날도 있다. 강하게 압축하는 변형은 더 나은 결과를 위해 처리 시간을 더 쓴다. 사전 압축은 API 와 명령 줄 양쪽에서 쓸 수 있고, 작은 파일에서는 한 버퍼 안의 이력이 짧아서 이 사전이 숫자를 제대로 만들어 준다.

1.10.0 판은 부제부터 여러 코어 판으로, 스레드를 정식 기능으로 올렸다. Windows 에서는 처음부터 켜져 있고, 스레드 수는 환경 변수로 정하며, 사전 API 도 시험 단계에서 안정된 인터페이스로 넘어갔다. 형식 규격은 공개되어 있고, 틀과 블록 형식에는 자세한 문서가 있으며, 여러 언어를 위한 연결도 갖춰져 있다.

보이지 않는 일꾼

허락은 두 조항짜리 BSD 라서 상업 제품에 넣어도 허락 절차가 필요 없다. 그 자유 덕분에 오래전에 "압축 도구"가 아니게 되었다. 자료 저장소와 파일 체계, 커널 부품, 묶음 형식이 직접 품고, 배포판 저장소에서도 그 이름을 흔히 본다. 개발자에게는 소프트웨어보다 토대에 가깝다. 함수 하나를 부르고, 사용자는 이름을 모르며, 그저 빠르다고 느낀다.

무엇이 아닌지도 같은 만큼 분명히 해야 한다. 가장 작은 파일을 만들지는 않는다. 대역이나 디스크를 아끼는 것이 목표라면 더 무거운 알고리즘이 이기고, 그것을 써야 한다. 백업 형식도, 묶음 관리자도, 사람이 직접 만지는 무엇도 아니다. 하는 일은 남의 프로그램 안에서 사라지는 것이다.

숫자를 정직하게 읽기

이런 숫자는 오용을 부르므로 무엇을 뜻하는지 덧붙여야 한다. 코어 하나에서 잰 처리량은 알고리즘을 말하고, 당신의 프로그램을 말하지 않는다. 실제 경로에는 복사와 잠금, 네트워크 왕복, 직렬화가 붙고, 자료가 연결을 하나 건너는 순간 압축기의 우위는 줄어든다. 정직한 평가는 자기가 실제로 돌리는 경로를 재는 것이고, 정직한 선택은 막힌 것이 시간인지 공간인지를 먼저 묻는 것이다.

실제 프로젝트에서 어떻게 선택되는가

이런 결정은 라이브러리끼리의 경연인 경우가 드물다. 설계 논의에서 한 문장으로 등장한다. 기록은 작을 필요가 없고, 다음 거래가 확정되기 전에 쓰이면 된다. 요구가 그것이 되는 순간 논의는 끝난다. 더 작은 파일을 만드는 후보가 바로 시간 안에 끝내지 못하는 후보이기 때문이다.

통합도 그만큼 검소하다. 버퍼 하나가 들어가고 버퍼 하나가 나오며, 사이에 다른 도구가 이미 읽는 틀 형식이 있다. 규격이 공개되어 있다는 조용한 이점으로, 오늘 쓴 파일을 다른 언어로 쓴 다른 프로그램이 읽는다. 문제가 생기면 실패는 대개 크기나 판이 맞지 않는 것이지 수수께끼가 아니다. 새벽 세 시에는 그것이 큰 값어치다.

천장은 실제로 어디인가

되풀이할 값어치가 있다. 천장은 기계이지 알고리즘이 아니다. 저장과 메모리가 충분히 빨라져서, 이 속도로 일하는 압축기는 시간의 상당 부분을 바이트가 도착하기를 기다리는 데 쓴다. 그래서 더 밀어도 보이는 것보다 적게 얻는다. 남은 여유는 주변 프로그램에 있고 이 라이브러리에 없다.

세월에 따른 프로젝트의 모양도 그것으로 설명된다. 흥미로운 일은 코어를 더 빠르게 하는 데서, 바르게 쓰기 쉽게 만드는 데로 옮겨 갔다. 다중 스레드, 안정된 사전 인터페이스, 두 번째 구현이 가능할 만큼 자세한 형식 문서. 토대에게 지루함과 믿음직함은 같은 칭찬이다.

하나 더, 도입을 검토하는 사람이 반드시 묻는 것. 이미 쓰는 도구가 같은 형식을 읽을 수 있다면, 교체의 주된 작업은 파일 호환보다 주변 계측이 된다. 읽지 못한다면 그 판단이 첫 관문이고, 압축 속도는 두 번째 이야기다.

압축의 맞바꿈은 늘 속도와 압축률 사이에 있었다. 이 라이브러리는 저울을 속도 쪽으로 끝까지 밀고, 너그러운 허락과 십 년이 넘는 꾸준한 손질로 그 자리를 지켜 왔다. 대역이나 디스크를 아껴야 할 때는 최선의 답이 아니고, 시간을 아껴야 할 때는 거의 언제나 첫 후보다.

LZ4다운로드
지원 운영체제: Windows macOS Linux