为云和边缘应用程序构建快速数据压缩代码?
来源:CPDA数据分析师网 / 作者:数据君 / 时间:2020-06-10
压缩和解压缩会消耗处理器资源
尤其是在数据密集型应用程序中,这可能会对整个系统的性能产生负面影响,因此压缩算法的优化实现对于程度地降低系统性能影响至关重要,英特尔®集成性能基元(Intel®IPP)是一个库,其中包含针对各个域的高度优化的功能,包括无损数据压缩,英特尔®IPP为开发人员提供了用于图像处理,信号处理和数据处理(数据压缩/解压缩和加密)应用程序的高质量,生产就绪的低级构建块,英特尔®IPP是一站式的编程工具/库,针对各种英特尔®架构(英特尔®Quark™,英特尔®凌动®,英特尔®酷睿™,英特尔®至强®和英特尔®至强)进行了高度优化Phi™处理器),这些现成的免版税的API供软件开发人员,集成商和解决方案提供商使用,以调整其应用程序并获得性能。
我们将讨论这些功能和改进
我们将检查它们的性能,并说明如何优化这些功能以获得性能,我们还将说明应用程序如何根据工作负载特征决定使用哪种压缩算法。
英特尔®IPP数据压缩功能
英特尔IPP数据压缩域提供了常见数据压缩算法的优化实现,包括BZIP2,ZLIB,LZO和新的LZ4功能,这些功能将在英特尔IPP 2018 Update 1版本中提供,这些实现为原始压缩代码提供了“嵌入式”替换,将原始数据压缩代码移至英特尔IPP优化代码很容易,这些数据压缩算法是许多应用程序中的基本功能,因此各种应用程序都可以从英特尔IPP中受益,一个典型的例子是英特尔IPP ZLIB压缩,ZLIB是用于各种文件归档器(例如gzip *,WinZip *和PKZIP *),便携式网络图形(PNG)库,网络协议和某些Java *压缩类的基本压缩方法。该应用程序只需要与Intel IPP ZLIB库重新链接,如果应用程序使用ZLIB作为动态库,则可以轻松切换到使用Intel IPP构建的新动态ZLIB库。在后一种情况下,不需要重新链接应用程序。
寻找压缩和解压缩数据的有效方法比以往任何时候都更为重要
输入英特尔®IPP库。找到有效的方式来压缩和解压缩数据比以往任何时候都更为重要,输入英特尔®IPP库。”
英特尔IPP数据压缩优化
英特尔IPP数据压缩如何执行优化并达到性能?英特尔IPP使用几种不同的方法来优化数据压缩功能。由于对数据的依赖性强(例如,算法的行为取决于输入数据),因此数据压缩算法对于在现代平台上进行优化非常困难。基本上,这意味着只能使用一些新的CPU指令来加速这些算法。在有限的情况下(大多数是模式搜索),可以在此处使用单指令多数据(SIMD)指令。
英特尔IPP中数据压缩的性能优化以不同的方式和不同的级别进行:
1、算法优化 –在级别,算法优化可提供的收益。数据压缩算法在Intel IPP中从头开始实施,以有效的方式处理输入数据并生成输出。
2、数据优化 –仔细计划内部数据布局和大小也会带来性能优势。正确对齐数据可以节省读写数据时的CPU时钟。
3、新的CPU指令 –英特尔®Streaming SIMD扩展4.2(英特尔®SSE 4.2)架构引入了多个CPU指令,根据其性质,它们可用于数据压缩算法中。
4、英特尔IPP数据压缩性能 –每种英特尔IPP功能都包括多个代码路径,并且每种路径都针对特定代的英特尔®和兼容处理器进行了优化。
由于数据压缩是压缩性能和压缩率之间的权衡,因此没有适用于所有应用程序的“”压缩算法。例如,BZIP2算法实现了良好的压缩效率,但是由于它更为复杂,因此压缩和解压缩都需要大量CPU时间。
用户的应用程序如何确定压缩算法?通常,这涉及许多因素:
1、压缩性能满足应用程序的要求
2、压缩率
3、压缩延迟,这在某些实时应用中尤其重要
4、满足某些嵌入式目标应用程序要求的内存占用量
5、符合标准压缩方法,可通过任何标准存档实用程序对数据进行解压缩
6、应用程序要求的其他因素
7、确定特定应用程序的压缩算法需要平衡所有这些因素,还需要考虑工作负载的特性和要求。没有适用于所有方案的“”压缩方法。