LuatOS的fastlz压缩技术——为嵌入式系统赋能的数据压缩方案
在物联网与边缘计算场景中,数据压缩是优化带宽与存储的核心手段。LuatOS所集成的fastlz压缩库,凭借其高效率与低资源消耗特性,为嵌入式设备提供了可靠的压缩能力。本文将介绍其核心API及典型应用场景,帮助开发者充分发挥其潜力。
一、概述
FastLZ 和 miniz 都是流行的压缩库,但它们在设计目标、压缩算法、性能特点等方面有显著区别,适用于不同的应用场景。
FastLZ 是高效且小巧的开源压缩库,主要用于实现基于 LZ77 算法的字节对齐数据压缩。
LZ77(Lempel-Ziv 1977)是数据压缩领域的一种基础方法,其核心思想是通过查找源数据中的重复模式来减少存储空间。
适用于压缩文本/段落序列、原始像素数据序列或具有大量重复的任何其他数据块。但是不打算用于图像、视频和其他通常已经以最佳压缩形式存在的格式的数据。
FastLZ 的重点是非常快速的压缩和解压缩。
miniz是一个单一文件的小型压缩库,它是zlib的一个替代品,专门为需要轻量级压缩解决方案的项目设计,它被设计成可以轻松地集成到项目中,并且具有最小的依赖性。
miniz的主要特点包括:
1、支持zlib兼容的压缩和解压缩。
2、单个源文件实现,易于集成。
3、小的内存占用,适合资源受限的环境。
4、支持流式压缩和解压缩。
压缩比, miniz的压缩比要好于fastlz
总结:FastLZ 是 "速度优先"的轻量选择,miniz 是 "兼容与压缩率优先" 的通用选择。
二、核心示例
1、核心示例是指:使用本库文件提供的核心API,开发的基础业务逻辑的演示代码;
2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;

三、常量详解
核心库常量,顾名思义是由 LuatOS 内核固件中定义的、不可重新赋值或修改的固定值,在脚本代码中不需要声明,可直接调用;
每个常量对应的常量取值仅做日志打印时查询使用,不要将这个常量取值用做具体的业务逻辑判断,因为LuatOS内核固件可能会变更每个常量对应的常量取值;
如果用做具体的业务逻辑判断,一旦常量取值发生改变,业务逻辑就会出错;
fastlz核心库没有常量。
四、函数详解
4.1 fastlz.compress(data, level)
快速压缩,需要内容比较小(只需要32k+原始数据大小)
参数
data

level

**返回值 **local cdata = fastlz.compress(data, level)
cdata

示例

4.2 fastlz.uncompress(data, maxout)
快速解压
参数
data

maxout

返回值 local udata = fastlz.uncompress(data, maxout)
udata

示例

五、模组支持说明
支持LuatOS开发的模组中:
Air780EPM不支持此功能,Air78080E/EG支持此功能;
Air700ECH/Air780EHN/EHU/EHM/EHV/EGH/Air8000的11号、12号、111号、112号固件不支持此功能。
Air8101/A/Air6101/A的1号、2号、3号固件都支持此功能。
今天的内容就分享到这里了~

浙公网安备 33010602011771号