网站首页 > java教程 正文
Zstandard (也被称为zstd )是一款免费的开源,快速实时数据压缩程序,具有更好的压缩比,由Facebook开发。
它是用C语言编写的无损压缩算法 (在Java中有一个重新实现)。因此它是一个本地Linux程序。
当需要时,它可以将压缩速度交换为更高的压缩比率(压缩速度与压缩比率的权衡可以通过小增量来配置),反之亦然。 它具有小数据压缩的特殊模式,称为字典压缩,可以从任何提供的样本集中构建字典。 它带有一个命令行实用程序,用于创建和解码.zst , .gz .xz 和 .lz4 文件。
重要的是,Zstandard拥有丰富的API集合,支持几乎所有流行的编程语言,包括Python,Java,JavaScript,Nodejs,Perl,Ruby,C#,Go,Rust,PHP,Switft等等。
Benchmarks
作为参考,一些快速压缩算法在一个运行 Arch Linux (Linux 版本5.5.11-arch1-1)的服务器上进行了测试和比较,使用了 Core i9-9900K CPU@5.0 GHz,使用 lzbench,一个由@inikep 在西里西亚压缩语料库上用 gcc 9.3.0编译的开源内存基准测试。
其中--fast代表负压缩级别,提供更快的压缩和解压缩度,以换取相对于1级的压缩比损失。
小型数据压缩的案例
前面的图表提供的结果适用于典型的文件和流场景(几MB的大小)。
要压缩的数据量越小,压缩就越困难。这个问题在所有的压缩算法中都很常见,原因是压缩算法从过去的数据中学习如何压缩未来的数据。
为了解决这个问题,Zstd 提供了一种训练模式,可以用来对选定类型的数据进行算法调优。通过提供一些样本(每个样本一个文件)来实现 Zstandard 的训练。这种训练的结果存储在一个名为“ dictionary”的文件中,必须在压缩和解压缩之前加载该文件。使用这本字典,可以在小数据上实现的压缩比/值大大提高。
下面的示例使用 github-users 示例集,该示例集是从 github public API 创建的。它由大约10K 条记录组成,每条记录重约1KB。
这些压缩增益的实现,同时提供更快的压缩和解压缩速度。
如果在一组小数据样本中存在某种相关性,则训练是有效的。一个字典的数据特定性越强,它的效率就越高(没有通用的字典)。因此,为每种类型的数据部署一个字典将带来最大的好处。字典增益在前几个 KB 中最有效。然后,压缩算法将逐渐使用先前解码的内容,以更好地压缩文件的其余部分。
那么你的应用中有需要用到压缩场景的吗?不妨试试Facebook的这个开源库,看看能否给你的压缩过程提提速!
关注我,发送私信“zstd”获取仓库地址!
猜你喜欢
- 2025-05-28 Google相似图片搜索的原理概述
- 2025-05-28 9款最好的JavaScript压缩工具
- 2025-05-28 10 款视频压缩工具测评:谁是文件瘦身王者?
- 2025-05-28 “用一部分工资换不加班、不发愁!”他们把工作转包了出去
- 2025-05-28 JAVA程序保护03_Proguard
- 2025-05-28 springboot 2整合websocket推送消息、数据流、解析pdf图片并压缩
- 2025-05-28 推荐7个宝藏压缩网站,图片、视频、动图、文档压缩,一网打尽
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)