压缩基准测试
用 gzip、Brotli 和 Zstandard 以你选择的级别压缩自己的文件,并比较大小、压缩比、速度和内存,全部在浏览器中完成。
输入内容和文件始终留在浏览器中
文件和编解码器
要压缩的文件
任意本地文件。文件始终保留在此设备上。
每个编解码器和级别都在独立的 Web Worker 中,针对内存中的样本副本运行。不会上传或保存任何内容。
高级别很慢:Brotli 10–11 和 Zstandard 19–22 处理 64 MiB 可能需要几分钟。建议先用较小的样本。
选择一个文件,查看每个编解码器能将其压缩到多小以及速度多快。
| 编解码器 | 级别 | 大小 | 压缩比 | 节省 | 压缩 | 速度 | 解压 | 速度 | WASM 内存 | 检查 | 保存 |
|---|
计时只包括编解码器调用,不包括读取文件。速度是两个方向上每秒处理的输入字节数。WASM 内存是该次运行期间 WebAssembly 堆的增长量(压缩 / 解压),在全新的 worker 中测量;浏览器内置编解码器没有这项数据。结果会因运行次数和设备而异。
本页内容
压缩基准测试用 gzip、Brotli 和 Zstandard 以多个级别压缩你选择的文件,并并排显示压缩后大小、压缩比、节省空间、压缩和解压速度以及 WebAssembly 内存。它用你自己的数据回答哪种编解码器和级别最适合你的数据,而且无需上传。
详细功能
文件的前 1 到 256 MiB 会被读入内存,然后每个编解码器和级别都在全新的 Web Worker 中运行:gzip 使用兼容 zlib 的 Deflate,Brotli 使用 4 MiB 窗口,Zstandard 带校验和,全部编译为 WebAssembly;另外还有浏览器自带的 CompressionStream gzip 用于对比。只对编解码器调用计时。
开启检查后,每个结果都会在另一个全新的 worker 中解压,并按长度和 CRC-32 与原始数据比较,同时测量解压速度。由于每次运行都从空的 WebAssembly 堆开始,内存列显示的就是该编解码器和级别实际所需的内存。
表格会突出显示最小的输出和最快的压缩,并可下载为包含原始数值的 CSV。任意一行都可以用其设置压缩整个文件,并保存为 .gz、.br 或 .zst。
实用示例
JSON API 响应: 一个 16 MiB 的 JSON 导出中,gzip 6 约为 8×,Brotli 9 接近 11×,而 Zstandard 3 的大小接近 gzip,速度却是它的数倍。
为日志选择级别: Zstandard 的 1、3、9 和 19 级别可以显示出额外的 CPU 时间从何处开始不再换来明显的体积缩减。
已压缩的数据: JPEG 或 ZIP 的压缩比接近 1.0×,说明再次压缩是在做无用功。
静态资源: 在服务器上配置预压缩资源之前,先针对打包后的 JavaScript 文件比较 Brotli 11 与 gzip 9。
如何使用此工具
选择文件
拖放或选择任意文件。基准测试会立即以默认的编解码器和级别开始。
选择编解码器和级别
启用或关闭编解码器,并输入级别,如 1, 6, 9 或范围 3-5。选择要测试文件的多少数据。
运行并比较
选择“运行基准测试”。每次运行完成后都会出现一行;最小和最快的结果会被突出显示。
保存
将表格下载为 CSV,或在某一行上选择“保存”,用这些设置压缩整个文件。
提示和最佳实践
- 文本、JSON、CSV 和日志压缩效果好;图片、视频和压缩包几乎不会变小。
- 在高级别下,Brotli 和 Zstandard 的解压速度远快于压缩速度,适合压缩一次、频繁读取的文件。
- 计时取决于设备和浏览器;请比较在同一台机器上完成的运行。
- 要查看或解压压缩包,请使用“压缩包浏览器”。