์์ถ ์ปจํ
์คํธ๊ฐ ์ฌ์ฌ์ฉ๋์ง ์์ผ๋ฉด ์ง์์ ์ผ๋ก ์ฝ๊ฐ ๋ ๋์ ์์ถ ๋น์จ์ ์ป๊ณ ์์ต๋๋ค.
ZSTD ์์ถ ์ปจํ
์คํธ๋ฅผ ์์ฑ ํ ๋ค์ ZSTD_compressCCtx๋ฅผ ํธ์ถํ๋ ๋ฃจํ์์ ๋งค๋ฒ ๋ฐ์ดํฐ์ ํจ๊ป 1MB ๋ฒํผ๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ๋ก์ธ์ค๊ฐ ๋๋๋ฉด ์์ถ ์ปจํ
์คํธ๊ฐ ํด์ ๋ฉ๋๋ค.
์์ถ ์ปจํ
์คํธ๋ฅผ ํด์ ํ๊ณ ๋ค์ 1MB ๋ฒํผ๋ฅผ ์์ถํ๊ธฐ ์ ์ ์ ์ปจํ
์คํธ๋ฅผ ์์ฑํ๋ฉด ์ถ๋ ฅ ํ์ผ ํฌ๊ธฐ๊ฐ ์ง์์ ์ผ๋ก ์ฝ 1 % ์์์ง๋๋ค.
๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ฌ์ค์ ๋ฐ์ดํฐ์ 2MB ์
๋ ฅ ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ 1MB ์
๋ ฅ ๋ฒํผ์ ๋นํด ์์ถ๋ฅ ์ด ์ฝ 1 ~ 1.5 % ๋ ๋๋ค๋ ๊ฒ์
๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก์์๋ ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค์ ์ํด ์ ํ๋์ง ์์ต๋๋ค.
์ง๋ฌธ
์๋ ํ์ธ์ @scherepanov ,
์ด ๊ฒฐ๊ณผ๋ ๋๋์ต๋๋ค.
๋์ผํ ์
๋ ฅ๊ณผ ๋์ผํ ์์ถ ์์ค์ผ๋ก ZSTD_compressCCtx()
๋ฅผ ์ฌ์ฉํ๋ฉด ์ปจํ
์คํธ๊ฐ ์ฌ์ฌ์ฉ๋๋์ง ์ฌ๋ถ๊ฐ ์ค์ํ์ง ์์ต๋๋ค (์์ถ ๋น์จ ๊ด์ ์์). ์ปจํ
์คํธ ์ฌ์ฌ์ฉ์ ์ ์ผํ ์ํฅ์ ํ ๋น ๋ฐ ์ด๊ธฐํ ์๊ฐ์ ์ ์ฝํ๋ ๊ฒ์
๋๋ค. ์์ถ๋ฅ ์ ์ํฅ์ ์ค๋ค๋ฉด ์ด์ํ๊ณ ์๋ง ํ๋ฆฐ ๊ฒ์ผ ์๋ ์์ต๋๋ค.
๊ฐ๋ฅํ๋ค๋ฉด์ด ์๋๋ฆฌ์ค๋ฅผ ์ฌํํ๊ณ ์ถ์ต๋๋ค. ์ด๋ค ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
ํฐ ๋ฐ์ดํฐ ์ฒญํฌ๋ฅผ ์์ถํ๋ ์ฌ์ด์ ์์ถ ์ปจํ ์คํธ๋ฅผ ๋ฒ๋ฆฌ๋ ๊ฒ์ด ๋ ๋์ ๋ฐฉ๋ฒ์ ๋๊น?
์ปจํ
์คํธ๋ฅผ ๋ฒ๋ฆด ํ์๊ฐ ์์ต๋๋ค.
"์ข์"์ ์ผํ ์ด์ ๋ ์ฝ๋๋ฅผ ๋จ์ํํ๋ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ ์ฑ๋ฅ ์ธก๋ฉด์์ ๋ณผ ๋ ์ด์ ์ด ์์ด์ผํ๋ฉฐ ๋จ์ ์ด ์์ด์ผํฉ๋๋ค.
๊ถ์ฅ๋๋ ์ต์ ์ ์ ๋ ฅ ๋ฒํผ ํฌ๊ธฐ๋ ๋ฌด์์ ๋๊น?
์ด๊ฒ์ ๋งค์ฐ ์ํฉ ์ ์
๋๋ค. "๋ณดํธ์ ์ธ"์๊ณ ๊ฐ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก 8x ์ฐฝ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๋ฉด ์ฒญํฌ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ด ์ ์ ๋ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฐฝ ํฌ๊ธฐ๋ ์์ถ ์์ค์ ๋ฐ๋ผ ๋์ ๊ฐ์
๋๋ค.
512KB (๋ ๋ฒจ 1)์์ 8MB (๋ ๋ฒจ 19)๊น์ง ๋ค์ํฉ๋๋ค.
zstd์๊ฒ "์ํ๋๋งํผ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง๋ง ๋ ๋์ ์์ถ๋ฅ ์ ์ ๊ณตํ์ญ์์ค"๋ผ๊ณ ์๋ฆฌ๋ ๋ฐฉ๋ฒ
๋ ๋ฒจ 19๋ ์ด๋ฐ ์ข ๋ฅ ์ฌ์ผํฉ๋๋ค
๋ฐ / ๋๋ ์๋ "
๋ ๋ฒจ 4๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฐ ์ข ๋ฅ์ ๋๋ค. ์์ถ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด์ง ๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ด๊ฐ ์๊ฐํ ์์๋ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒ์ ๋๋ค.
๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ํ๋ ์ฌ์ฉ ์ฌ๋ก์์๋ง ์ปจํ ์คํธ๊ฐ์๋ ์คํธ๋ฆฌ๋ฐ ์์ถ์ ๋๊น? ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง์ผ๋ฉด ํฐ (> 1MB) ๋ฒํผ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์์ถํ๋ ๊ฒ์ด ๋ ๋ซ์ต๋๊น?
๋จ์ผ ํจ์ค ( ZSTD_compressCCtx()
๋ฐ ZSTD_decompressDCtx()
)์์ ๋
๋ฆฝ์ ์ธ ์ฒญํฌ๋ฅผ ์์ถ / ์์ถ ํด์ ํ๋ ๊ฒ์ด ๋ ๊ฐ๋จํ๊ณ ํจ์จ์ ์ผ ์ ์์ต๋๋ค. ํ ์ ์๋ค๋ฉด ๋ ์ข์ต๋๋ค. ์คํธ๋ฆฌ๋ฐ ๋ชจ๋๋ ๊ทธ ์ธ์๋ ๋ง์ ๋ณต์ก์ฑ์ ์ถ๊ฐํฉ๋๋ค. ๋ณต์ก์ฑ์ ๋๋ถ๋ถ ๋ด๋ถ์ ์ด๋ฉฐ ์จ๊ฒจ์ ธ ์์ง๋ง ์ฃผ์ ์์ด๋์ด๋ ๊ฐ๋จํ ์ ํจ์ค ์์ถ ๋๋ ์์ถ ํด์ ๋ณด๋ค ๋น ๋ฅผ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
๋งค์ฐ ๋ช
ํํ ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋ด ๋ฐ์ดํฐ์ ๋ค๋ฅธ ์์์ ๋ฐ๋ผ ๋ค๋ฅธ ์์ถ ๋น์จ์ ์ถ์ ํ์ต๋๋ค. ์, ์ปจํ
์คํธ๋ฅผ ์ฌ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ฒ๋ฆฌ๋ ๊ฒ์ ๋น์ ์ด ๋งํ ๊ฒ๊ณผ ๋๊ฐ์ด ์ฐจ์ด๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค. ์ฃ์กํฉ๋๋ค. ์ง๋ฌธ์ ์ ์ถํ๊ธฐ ์ ์ ๋ ์กฐ์ฌํ๊ณ ๋ ์์ธํ ์กฐ์ฌํด์ผํฉ๋๋ค.
๊ทํ์ ์๊ฒฌ์ ๋งค์ฐ ๋ช
ํํ๊ณ ์ค๋ช
์ด ์๋์ด ์์ต๋๋ค. ์ ๋ง ๋ฌธ์์ ์ถ๊ฐํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํนํ ์คํธ๋ฆฌ๋ฐ๊ณผ ๋น ์คํธ๋ฆฌ๋ฐ์ ์ฐจ์ด์ ์ ๋ํ ๋ถ๋ถ-์ฌ์ ์ ๋ ์ ๊ตฌ์ถ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์คํธ๋ฆฌ๋ฐ์ด ๋ ํจ์จ์ ์ด๋ผ๊ณ ํญ์ ์๊ฐํ์ต๋๋ค (ํ์ผ์์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ ๋ ๋ ์ฌ์ ์ ์์ ํ๋ ๋ฐฉ๋ฒ์ ๋ช
ํํ์ง ์์). ์คํธ๋ฆฌ๋ฐ์ด "๋ธ๋ก ๊ธฐ๋ฐ"์์ถ๊ณผ ๊ฑฐ์ ๋์ผํ๋ค๋ ๋ช
ํํ ์ดํด๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ฐ๋ฉด์ ์ฒญํฌ ํฌ๊ธฐ๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ฏ๋ก ์คํธ๋ฆฌ๋ฐ์ด ๋ ํจ์จ์ ์ผ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ์์ถ ์์ค 3์ 1MB ์ฒญํฌ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๋ ๋์ ์์ถ์ ์ป๊ธฐ์๋ ์ถฉ๋ถํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฌํ ๊ด์ ์์ ๋ณผ ๋ ์ฒญํฌ ํฌ๊ธฐ๋ฅผ ๋ ์ต์ ์ผ๋ก ๊ฒฐ์ ํ ์ ์์ผ๋ฏ๋ก ์คํธ๋ฆฌ๋ฐ์ด ์์ถ ๋น์จ์์ ๋ ํจ์จ์ ์ผ ์ ์์ต๋๋ค. (์ด ์ฌ๋ฐ๋ฅธ์ง???)
์คํธ๋ฆฌ๋ฐ์ "๋ธ๋ก ๊ธฐ๋ฐ"์์ถ๊ณผ ๊ฑฐ์ ๋์ผํฉ๋๋ค.
์ ํํ "๊ฐ์"๊ฒ์ ์๋๋๋ค.
์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ฒญํฌ๋ก ์๋ผ๋ด์ด ZSTD_compressCCtx()
๋
๋ฆฝ์ ์ผ๋ก ์ ๋ฌํ๋ฉด ์ฌ๋ฌ ๊ฐ์ ๋
๋ฆฝ์ ์ธ ์์ถ ์ฒญํฌ๊ฐ ์์ฑ๋ฉ๋๋ค. ์์ถ ๋ ๊ฐ ์ฒญํฌ๋ ๋
๋ฆฝ์ ์ธ _frame_์
๋๋ค. ๊ฐ ํ๋ ์์ ๋
๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ค ์์๋ก๋ ์์ถ์ ํ ์ ์์ต๋๋ค.
์ฒญํน์์ด ZSTD_compressStream()
ํ์ฌ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋จ์ผ ์คํธ๋ฆผ์ผ๋ก ์ ์กํ๋ฉด _single frame_์ด๋ฉ๋๋ค. ๋ด๋ถ์ ์ผ๋ก๋ ํ๋ ์์ด ๋ธ๋ก์ผ๋ก ์ ๋จ๋์ง๋ง ๋ธ๋ก์ ๋
๋ฆฝ์ ์ด์ง ์๊ธฐ ๋๋ฌธ์ ์ค์ํ์ง ์์ต๋๋ค. ํ๋ ์์ ์ผ๋ถ๋ฅผ ๋์ฝ๋ฉํ๋ ค๋ฉด ์ฒ์๋ถํฐ ๋ชจ๋ ๊ฒ์ ๋์ฝ๋ฉํด์ผํฉ๋๋ค.
์ด๋ก ์ ์ผ๋ก ๋จ์ผ ํ๋ ์์ ์ฌ๋ฌ ๊ฐ์ ๋
๋ฆฝ ํ๋ ์๋ณด๋ค ๋ ์ ์์ถ๋์ด์ผํฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๋
๋ฆฝ์ ์ธ ์ฒญํฌ๋ก ์๋ฅด๋ฉด ๊ฐ ์ฒญํฌ์ ์์ ๋ถ๋ถ์์ ์์ถ ๊ธฐํ๋ฅผ ์๊ฒ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ทธ๋ฌ๋ ๋น ๋ฅธ ๋ชจ๋๋ ๋จ์ง "ํ๋ฅ ์ "์์ถ๊ธฐ๋ก, ๋น ๋ฅด๊ฒ ์คํํ๊ธฐ ์ํด ์๋๋ฌ ๋ฒ ํ
์ํฉ๋๋ค. ๋ชจ๋ ๊ธฐํ๊ฐ ๋์ผํ์ง๋ ์์ผ๋ฉฐ ๋๋ก๋ ํ๋์ ๊ธฐํ๋ฅผ ์ ํํ๋ฉด ๋์ค์ ๋ ๋์ ๊ธฐํ๋ฅผ ๊ฐ๋ฆด ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ๋ฐ์ดํฐ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
๋ฐ๋ผ์ ๋๋ฌผ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋
๋ฆฝ์ ์ธ ์ฒญํฌ๋ก ์ ๋จํ๋ฉด ๋จ์ผ ์คํธ๋ฆผ๊ณผ ๊ฒฝ์ํ๊ฒ ๋ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋๋ ๊ทธ๊ฒ์ ๋ด๊ธฐํ์ง ์์ ๊ฒ์
๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋จ์ผ ์คํธ๋ฆผ์ด ์ด๊ธธ ๊ฒ์
๋๋ค.