APCF:自适应精度的浮点数时间序列无损压缩算法

刘于溪，瞿有利**

（北京交通大学交通大数据与人工智能教育部重点实验室, 北京 100044）

2.02.02.02.02.02.0Artificial Intelligence in Transportation, Beijing Jiaotong University, Beijing 100044；Artificial Intelligence in Transportation, Beijing Jiaotong University, Beijing 100044北京交通大学交通大数据与人工智能教育部重点实验室, 北京 100044;北京交通大学交通大数据与人工智能教育部重点实验室, 北京 100044100044;10004413795731872;1369363803913795731872;13693638039北京市海淀区上园村3号北京交通大学;北京市海淀区上园村3号北京交通大学yuxi.liu@bjtu.edu.cn;ylqu@bjtu.edu.cn刘于溪（2000-），女，硕士，数据压缩;瞿有利（1974-），男，副教授，硕导，人工智能及应用，计算机技术刘于溪;瞿有利Liu Yuxi;Qu Youli瞿有利2.02.02.02.02.0 2.02.02.02.02.02.02.02.02.02.02.02.02.02.02.0

1*|*期刊*|*Atzori L, Iera A, Morabito G. The internet of things: A survey[J]. Computer networks, 2010, 54(15): 2787-2805.<CR>2*|*在线文献*|*Collet Y. Zstandard - Fast real-time compression algorithm [EB/OL]. 2016 [2025-01-08].https://github.com/facebook/zstd.<CR>3*|*在线文献*|*Mizek T. The .xz File Format [EB/OL]. 2023 [2025-3-18]. https://tukaani.org/xz/xz-file-format.txt.<CR>4*|*期刊*|*Collet Y. LZ4 - Extremely fast compression [EB/OL]. 2013 [2025-3-18]. https://github.com/lz4/lz4.<CR>5*|*在线文献*|*M. Oberhumer. Lzo-a real-time data compression library[OL]. [2025-01-28]. http://www.oberhumer.com/opensource/lzo/.<CR>6*|*期刊*|*Shannon C E. A mathematical theory of communication[J]. The Bell system technical journal, 1948, 27(3): 379-423.<CR>7*|*期刊*|*Shi Y, Zou X, Chen X, et al. Machete: An Efficient Lossy Floating-Point Compressor Designed for Time Series Databases[C]//2024 Data Compression Conference (DCC). IEEE, 2024: 532-541.<CR>8*|*期刊*|*Eichinger F, Efros P, Karnouskos S, et al. A time-series compression technique and its application to the smart grid[J]. The VLDB Journal, 2015, 24: 193-218.<CR>9*|*期刊*|*Tian J, Di S, Zhao K, et al. Cusz: An efficient gpu-based error-bounded lossy compression framework for scientific data[C]//Proceedings of the ACM International Conference on Parallel Architectures and Compilation Techniques. 2020: 3-15.<CR>10*|*期刊*|*Huang Y, Di S, Yu X, et al. cuszp: An ultra-fast gpu error-bounded lossy compression framework with optimized end-to-end performance[C]//Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis. 2023: 1-13.<CR>11*|*期刊*|*Pelkonen T, Franklin S, Teller J, et al. Gorilla: A fast, scalable, in-memory time series database[J]. Proceedings of the VLDB Endowment, 2015, 8(12): 1816-1827.<CR>12*|*期刊*|*Liakos P, Papakonstantinopoulou K, Kotidis Y. Chimp: efficient lossless floating point compression for time series databases[J]. Proceedings of the VLDB Endowment, 2022, 15(11): 3058-3070.<CR>13*|*期刊*|*Li R, Li Z, Wu Y, et al. Elf: Erasing-based lossless floating-point compression[J]. Proceedings of the VLDB Endowment, 2023, 16(7): 1763-1776.<CR>14*|*期刊*|*Kuschewski M, Sauerwein D, Alhomssi A, et al. Btrblocks: Efficient columnar compression for data lakes[J]. Proceedings of the ACM on Management of Data, 2023, 1(2): 1-26.<CR>15*|*期刊*|*Afroozeh A, Kuffo L X, Boncz P. Alp: Adaptive lossless floating-point compression[J]. Proceedings of the ACM on Management of Data, 2023, 1(4): 1-26.<CR>16*|*在线文献*|*Google. Protocol Buffers [EB/OL]. 2001 [2025-3-12]. https://protobuf.dev.<CR>17*|*期刊*|*Kahan W. IEEE standard 754 for binary floating-point arithmetic[J]. Lecture Notes on the Status of IEEE, 1996, 754(94720-1776): 11.<CR>18*|*期刊*|*Burtscher M, Ratanaworabhan P. FPC: A high-speed compressor for double-precision floating-point data[J]. IEEE transactions on computers, 2008, 58(1): 18-31.<CR>19*|*期刊*|*Adams U. Ryū: fast float-to-string conversion[C]//Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation. 2018: 270-282.<CR>20*|*期刊*|*Roth M A, Van Horn S J. Database compression[J]. ACM sigmod record, 1993, 22(3): 31-39.<CR>21*|*期刊*|*National Ecological Observatory Network (NEON). 2D wind speed and direction(DP1.00001.001)．2022．https://data.neonscience.org/data-products/DP1.00001.001/RELEASE-2022.<CR>22*|*在线文献*|*National Ecological Observatory Network (NEON). Barometric pressure(DP1.00004.001)[EB/OL]．2022．https://data.neonscience.org/data-products/

DP1.00004.001/RELEASE-2022.<CR>23*|*在线文献*|*InfluxData. Sample data for InfluxDB 2.0 [EB/OL]. 2025 [2025-3-12]. https://github.com/influxdata/influxdb2-sample-data.<CR>24*|*在线文献*|*Meteoblue. Historical Weather Data Download - Basel,Switzerland [EB/OL]. 2025 [2025-3-12].https://www.meteoblue.com/en/weather/archive/export/basel_switzerland.<CR>25*|*在线文献*|*Rajkumar S. Daily Temperature of Major Cities [EB/OL]. 2020 [2025-3-12]. https://www.kaggle.com/sudalairajkumar/daily-temperature-of-major-cities.<CR>26*|*在线文献*|*National Ecological Observatory Network (NEON). Relative humidity above water on-buoy(DP1.20271.001)．2022．https://data.neonscience.org/data-products/DP1.20271.001/RELEASE-2022.<CR>27*|*在线文献*|*National Ecological Observatory Network (NEON). IR biological temperature(DP1.00005.001)．2022．https://data.neonscience.org/data-products/DP1.00005.001/RELEASE-2022.<CR>28*|*在线文献*|*National Ecological Observatory Network (NEON). Dust and particulate size distribution(DP1.00017.001)．2022．https://data.neonscience.org/data-products/DP1.00017.001/RELEASE-2022.<CR>29*|*在线文献*|*Commission E. Financial data set used in INFORE project. 2020. https://doi.org/10.5281/zenodo.3886895.<CR>30*|*在线文献*|*Google. Snappy: A fast compressor/decompressor [EB/OL]. 2015 [2025-01-08]. https://github.com/google/snappy.<CR>31*|*期刊*|*Alakuijala J, Farruggia A, Ferragina P, et al. Brotli: A general-purpose data compressor[J]. ACM Transactions on Information Systems (TOIS), 2018, 37(1): 1-30.APCF:自适应精度的浮点数时间序列无损压缩算法|APCF:Adaptive Precision for Lossless Compression of Floating-Point Time Series||1|刘于溪|Liu Yuxi|北京交通大学交通大数据与人工智能教育部重点实验室, 北京 100044|Artificial Intelligence in Transportation, Beijing Jiaotong University, Beijing 100044|刘于溪（2000-），女，硕士，数据压缩|北京市海淀区上园村3号北京交通大学|100044|yuxi.liu@bjtu.edu.cn|13795731872|13795731872<CR>*|2|瞿有利|Qu Youli|北京交通大学交通大数据与人工智能教育部重点实验室, 北京 100044|Artificial Intelligence in Transportation, Beijing Jiaotong University, Beijing 100044|瞿有利（1974-），男，副教授，硕导，人工智能及应用，计算机技术|北京市海淀区上园村3号北京交通大学|100044|ylqu@bjtu.edu.cn|13693638039|13693638039

摘要：现有的浮点数时间序列无损压缩算法主要分为两类：基于异或操作的压缩算法和基于十进制的压缩算法。基于异或操作的压缩算法通过异或运算去除相邻两个浮点数在 IEEE 754 表示中的冗余部分，随后利用编码技术复用异或结果的前导零和中心有效位的长度，从而实现对浮点数的压缩。然而，这种方法在处理两个值相近的浮点数时，其 IEEE 754 表示可能仍存在显著差异，导致实际应用中复用情况较少。因此，该类算法在某些情况下对原始数据的压缩效果不佳，甚至可能无法实现有效的压缩。基于十进制表示的压缩算法通过将二进制浮点数与10的n次方乘，将其转换为相应的整数，以便进行压缩。然而，当小数精度不一致时，该类算法可能会导致较大的存储空间需求。

本文提出了一种自适应精度保留的浮点数时间序列无损压缩算法（APCF）。APCF 算法可分为两个主要阶段：预处理阶段和编码阶段。在预处理阶段，算法首先自适应地计算每个浮点数对应的十进制表示的精度，然后根据该精度对浮点数进行量化。通过异或操作，算法去除原始数据中的冗余信息，并将有效信息集中在低位。在编码阶段，算法分别使用游程编码器和改进的异或值编码器对精度值和异或值进行编码。实验结果表明，APCF算法在18个数据集上的平均压缩率达到0.23。与 ALP 算法相比，APCF 算法的平均压缩率提升了 18.2%；与 ELF 算法相比，平均压缩率提升了 19.9%。项目源码见 https://github.com/xiaoYu0103/osptBWT.git.

关键词：浮点数时间序列；无损压缩；自适应精度

中图分类号：TP315

APCF:Adaptive Precision for Lossless Compression of Floating-Point Time Series

Liu Yuxi, Qu Youli

(Artificial Intelligence in Transportation, Beijing Jiaotong University, Beijing 100044)

Abstract: Existing lossless compression schemes for floating-point time series are fundamentally bifurcated into two methodological paradigms: XOR-oriented techniques and decimal encoding strategies. XOR-based mechanisms mitigate redundancy through bitwise XOR operations applied to successive IEEE 754 floating-point values, utilizing the recurrence patterns of leading-zero lengths and central significant bits. Nevertheless, these techniques demonstrate performance degradation when processing numerically proximate values exhibiting substantial binary representation discrepancies under the IEEE 754 standard, yielding limited practical redundancy exploitation. Such scenarios frequently result in suboptimal compression ratios or even compression inefficacy. Decimal encoding methodologies transform binary floating-point numbers into integer representations via 10^n scaling, though divergent decimal precision requirements typically entail amplified storage overheads.

This paper proposes an Adaptive Precision for Lossless Compression of Floating-Point Time Series (APCF). The APCF methodology comprises two principal operational phases: preprocessing and encoding. During the preprocessing phase, the algorithm adaptively identifies optimal decimal precision thresholds, performs adaptive quantization, and consolidates residual information in least significant bits through bitwise XOR transformations. The encoding phase employs run-length encoding (RLE) for precision metadata compression coupled with a modified Gorilla encoder for residual processing. Extensive evaluations across 18 temporal datasets demonstrate APCF's superiority, yielding a mean compression ratio of 0.23:1. Comparative analysis with state-of-the-art compressors ALP and ELF reveals relative compression gains of 18.2% and 19.9% respectively. The source code repository is accessible at https://github.com/liuyuxicici/APCF.git.

Key words: Floating-Point Time Series;Lossless Compression;Adaptive Precision Preservation

引言

随着工业物联网的快速发展，现代生产设备每秒可生成数百万条高精度浮点时间序列数据（如传感器读数、工艺参数等）。此类数据的爆炸式增长引发存储成本指数级攀升、数据I/O性能瓶颈、长期数据完整性风险等核心挑战 [1]。

通用压缩算法（如Zstd [2]、Xz [3]、LZ4 [4]、LZO [5]）虽能实现中等压缩率，但其设计缺乏对浮点数据分布的针对性建模。根据香农信息论 [6]，压缩效率的理论上限由数据熵决定，而领域专用算法可通过对先验知识的利用逼近该极限 [7]。因此研究针对浮点数时间序列的压缩算法至关重要 [8], [9], [10]。

现有浮点数时间序列无损压缩算法主要分为两类：基于异或的压缩算法 [11], [12], [13]和基于十进制表示的压缩算法[14], [15]。

基于异或的浮点数时间序列数据的无损压缩算法包括Gorilla [11]、Chimp [12]、Chimp128 [12]、ELF [13] 。Gorilla通过异或操作处理相邻两个数据，使用复用的尾部零和前导零个数以及除此之外的有效位来表示单个浮点数；Chimp通过分析数据异或结果的前导零和尾部零的分布，改进 Gorilla 的编码方法，从而获得了更高的压缩率；改进的 Chimp128 在相邻 128 个数据中选择一个与当前浮点数异或产生最多尾部零的数据，因此在压缩效果上取得了显著的提高；ELF 提出在 IEEE 754 的浮点数表示中，可以通过擦除一定数量的尾部比特，同时存储数据的精度表示，以实现无损压缩。显然，基于异或的压缩算法的压缩率依赖于相邻浮点数 IEEE 754 表示的相似程度。相邻两个浮点数的前导零和尾部零数量越少，基于异或的压缩算法的压缩率越大；反之压缩率越小。

基于十进制表示的浮点数时间序列无损压缩算法包括PseudoDecimals (PDE) [14] 和 ALP [15]。PDE通过暴力破解获得浮点数精度 n ，并且将每个浮点数表示为一个 32 位的数值的整数表示和一个 5 位的指数的整数表示（例如，0.99 表示为 99 和 2）, 然后压缩该整数表示和浮点数精度 n 。ALP中每个压缩块使用一对 e 和 f，将原始数据与一个较大的量化参数 相乘，再乘以一个更小的参数 消除乘积的尾部冗余，得到量化后的整数，采用轻量级的编码方案 FFOR（Fused Frame of Reference）对该整数进行编码。ALP 的高效两阶段压缩方案在压缩率和压缩速度上取得了显著的效果。然而，PDE 和 ALP 在对浮点数进行乘法操作时会导致解压后的数据与原始数据不一致。针对这种情况，PDE 和 ALP 采用识别异常浮点数并单独存储的方案，导致额外的存储空间。

针对现有方法的局限性，本文提出一种自适应精度计算的浮点数时间序列无损压缩算法（APCF），本文的主要贡献如下：

（1）自适应获取浮点数精度。在当前浮点数的精度低于或等于前一个浮点数，可以采用复用前一浮点数的精度；在当前浮点数精度高于前一浮点数，则存储当前浮点数精度。

（2）提出混合编码器分别对浮点数精度和整数量化数值进行编码。根据浮点数精度阶梯上升的特征，利用游程编码和变长字节编码将浮点数精度进行编码；根据浮点数的整数量化数值的异或结果尾部零较少、绝对值较小的特征，通过复用尾部零个数以及独立压缩中心有效位个数对上述异或结果进行编码，提供了较高的压缩率。

（3）将APCF与 10 个最先进的压缩算法（5个通用压缩算法，5个浮点数压缩算法）在 18 个浮点数时间序列数据集上进行对比。实验结果表明，无论是与浮点数压缩算法或是与通用压缩算法对比，APCF 在大部分数据集上的压缩率表现最优，其平均压缩率对比ELF提升19.9%，对比ALP提升18.2%。

前置知识

浮点数时间序列

浮点时间序列可形式化定义为有序对序列：，其中时间戳 属于时间域 ，观测值位于 IEEE 754 浮点数向量空间 且满足维度约束 。该序列具有严格时间顺序性 ，当 时退化为单变量时间序列 。

双精度浮点数IEEE 754标准

IEEE754标准 [17] 规定了计算机系统中16位、32位、64位、128位和256位长度的浮点数的格式。其中最常用的是32位的单精度浮点数和64位的双精度浮点数的格式，下面介绍64比特的双精度浮点数的IEEE754标准的组成。如图 1 所示，IEEE754浮点数表示包括三个部分，符号部分Sign(S)、指数部分Exponent(E)、尾数部分Mantissa(M)。

如图 1 所示，IEEE 754双精度浮点表示由三个字段组成：

图1 IEEE 754 双精度浮点数表示

Fig. 1 IEEE 754 64-bit (Double-Precision) Floating-Point

• 符号位S：1比特，为1时表示负数，为0时表示正数。

• 指数部分E：11比特，决定了浮点数数值的范围。

• 尾数部分M：52比特，表示浮点数数值的有效数字。

浮点数的十进制表示与二进制表示之间的转换如公式(1)所示。

其中64比特的双精度浮点数中bias定义为1023。

浮点数精度

浮点数的十进制精度表示其规范化科学记数法中有效小数位的数量。对于任意实数 ，其规范十进制表示可表达为：

其中：

• 表示符号；

• 表示量级指数；

• 为精度指标；

• 且 。

精度域通过数字位置分析定义为：

最小精度由下式给出：

浮点数精度

比特串的前导零、中心有效位和尾部零定义如下所示：

其中各个组成部分定义如下所示：

• 前导零（LZ）：

前导零数量为。

• 中心有效位（CSB）：

其中：

最小长度：。

最大熵：当中无连续零时 。

• 尾部零（LZ）：

尾部零数量为。

动机

基于XOR的编码方法 [11], [12], [13], [18]通过连续IEEE 754值间的逐次异或操作挖掘时序值相关性。XOR残差位串通常被划分为三个组成部分：

基于异或的浮点数时间序列无损压缩算法利用时间序列时间相关性的特点，对相邻两个浮点数进行异或，然后将异或值分为前导零、中心有效位和尾部零三个部分。Gorilla、Chimp和ELF通过编码记录和复用前导零和中心有效位的长度来减小异或值的存储空间。然而，本文通过分析发现当前异或值中心有效位落在前一异或值中心有效位区间的概率较小，复用前导零和中心有效位的情况相对较少。通过复用尾部零并且记录中心有效位的数量可以提高复用率，从而提高压缩率。

基于十进制表示的浮点数时间序列无损压缩算法 [14], [15]将浮点数与10的n次幂相乘转换为对应十进制整数，然后对十进制整数进行压缩。通过将二进制浮点数转化为十进制整数可以减少数据的有效位数。然而，浮点数的运算会引入舍入误差，导致原始浮点数与解压后浮点数不一致，这种情况下，PDE和ALP不会对浮点数进行转换，而是直接存储原始浮点数。此外，PDE计算每个浮点数的精度 ，将浮点数与相乘转换为整数；而ALP则将一个数据块中的所有浮点数与同一个量化参数相乘。因此，前者需要花费额外的空间来存储数据块（ t 个数据）中所有浮点数精度；后者会在数据精度波动较大的情况下，将原始浮点数量化为更大的整数，降低后续压缩率。

因此，我们提出自适应精度保留的浮点数时间序列无损压缩算法（APCF）。

APCF

自适应精度计算的浮点数时间序列无损压缩算法(APCF)的总体流程如图2所示。输入一个浮点数时间序列数据集，APCF将其分割为多个大小相同的数据块（每个数据块包含1024个浮点数）。对于每个数据块，算法首先自适应地计算每个浮点数的精度，然后根据该精度对浮点数进行整数量化，将原始浮点数无损地映射为整数。为了进一步减少相邻数据点之间的冗余，算法采用异或操作来获取两个数据点二进制表示的差异。经过预处理阶段，原始数据被处理为精度值和异或值。在编码阶段，精度值通过游程编码和变长字节表示进行编码，而异或值则通过设计的高效比特记录编码器进行编码。

解压缩流程是压缩的逆操作。输入字节流表示的压缩数据，算法首先对精度数据进行解压缩。然后读取中心位数组，结合编码解压得到残差数据。通过精度数据与残差数据得到原始浮点数。

图2 APCF 算法总体流程

Fig. 2 The framework of APCF

预处理阶段

自适应精度。如图 2 中 Adaptive Precision Preservation 模块。APCF 依次自适应地复用每个浮点数量化所需的精度 ，如公式(7)所示。 表示当前浮点数最小精度，表示当前整数量化所需精度。

整数量化。 利用浮点数 的精度 ，将浮点数量化为对应的整数。APCF通过以下三个步骤完成整数量化：

（1）首先提取浮点数 的符号位 ，将其转换为正数 。

（2）随后利用Ryu中的算法 和浮点数量化精度 将浮点数 进行整数量化得到：

（3）最后，将符号位 移至量化整数的最低位。如公式(9)所示。如图2所示, 对 量化得到 。

该位运算将符号位嵌入量化整数的最低有效位(LSB)。

异或。由于浮点数序列的精度存在突变的情况，例如前一值为 3.4556（最小精度为 4），而当前值为 3.567544（最小精度为 6）。在这种情况下，直接对两个浮点数的整数量化值进行异或操作可能会产生一个较大的数值，这不仅无法达到压缩效果，反而可能增加存储需求。因此，APCF 将前一浮点数按照当前浮点数的精度进行整数量化，然后对整数量化后的结果进行异或操作。 通过公式(10)得到异或值序列。

其中。该机制确保差分编码的精度上下文一致性，避免因精度波动产生的存储开销。

编码阶段

通过预处理阶段，APCF得到浮点数精度序列和异或值序列。在编码阶段，APCF对浮点数精度序列和异或值序列进行编码。APCF预处理和编码的一个例子如图3所示。

图3 APCF 算法编码阶段流程示意图

Fig. 3 Workflow of the encoding stage in APCF

精度值序列编码

本文通过游程编码对精度值序列进行编码。游程编码将一串相同的序列编码为游长和变量，变量表示序列中的数据，游长表示序列长度。我们利用固定的9比特对变量进行编码，同时通过 Varint 编码 [16] 对游长进行编码来控制有效比特的长度。

异或残差序列编码

APCF 对异或值序列 采用以下编码方案进行编码：

（1）首个残差值编码：

a) 移除的前导零得到位串(有效位尾随零）。

b) 编码为：

其中：

• (比特串长度)。

• ：7比特的固定长度编码。

• ：与掩码按位与掩码。

（2）其余连续残差值编码：对于：

将值表示为(前导零 中心有效位 尾部零) 。我们将当前存储的尾部零长度记为 ，初始化位64。

b) 通过复用尾部零来编码：

• 情况1：当：

• 情况2：当：

更新。

其中 。

c) 记录中心比特位数：

通过上述编码方案，我们得到了中心有效位长度数组 ，并完成了对中心有效位和尾部零数量的编码。随后，我们利用 Frame of Reference (FOR) 编码 [20] 和固定长度编码对 CenterBitsNumber 进行进一步编码。具体步骤如下：首先将 CenterBitsNumber 数组划分为大小一致的小块，对于每个小块中的数据，找到其中最小值，并将其他数据与该最小值相减，得到一个包含最小值和其他数据与最小值差值的数组；然后，在该数组中找到最大值，并计算其比特串中最高位‘1’的位置 ，将 作为固定长度，通过存储数组中每个数值的二进制表示的低 位，可以准确地表示数组中的所有数值。

解码阶段

解码过程通过图2所示的三个逆操作重建原始浮点值：首先通过Varint解码[16]和游程解码恢复精度序列。接着通过解析标志位识别第4.2节的尾随零复用模式重构XOR残差，随后通过基准位宽提取和增量重构对CenterBitsNumber数组进行FOR解码。最终通过以下步骤实现全精度恢复：

（1）反向异或操作

（2）基于Ryu算法的逆量化：

实验

数据集

本文选取了18个具有代表性的时间序列数据集进行算法性能评估与分析，其中14个数据集专门用于ELF的评估。所有数据集中的浮点数值均按时间戳进行严格排序，以确保时序特征的完整性。鉴于本研究主要聚焦于双精度浮点数的压缩性能，实验中统一采用64位双精度浮点格式进行数据存储。表1详细列出了18个数据集的统计特征，包括时间跨度和数据量。

表1 浮点数时间序列数据集

Tab. 1 Floating-Point Time Series Datasets

数据集	时间跨度	数据量
Air-pressure	7 年	3,419,717
Air-sensor	1 小时	8,664
Basel-temp	10 年	87,720
Basel-wind	10 年	87,720
Bird-migration	1 年	17,964
Bitcoin-price	1 月	6,144
City-temp-algiers	25 年	9,266
City-temp-brussels	25 年	9,266
City-temp-dublin	25 年	9,266
Dew-point-temp	4 年	1,721,264
IR-bio-temp	6 年	31,164,851
PM10-dust	5 年	73,364
PM15-dust	5 年	73,370
Stocks-DE	1 年	1,137,754
Stocks-UK	1 年	1,490,507
Stocks-USA	1 年	9,436,760
Wind-dir	7 年	7,235,792
Wind-speed	7 年	7,235,792

实验设置

实验设备。每个数据集被划分为包含1024个浮点数的固定大小数据块。若末尾块不完整则进行零填充至1024点。压缩与解压操作均按块执行以测量压缩率、压缩时间和解压时间。所有实验在配备Intel® Xeon® Platinum 8575C CPU（4核16线程）和8.0GB DDR4-3200内存的Ubuntu 20.04服务器上完成。C++代码使用GCC 13.3.0编译，Java代码基于符合Java SE 8规范的JDK 1.8.0编译运行。

基准。我们对APCF与两类先进压缩算法进行综合性能评估：通用压缩算法(LZ4[4]、Zstd[2]、Snappy[30]、Brotli[31]、Xz[3])和浮点专用压缩算法(Gorilla[11]、Chimp[12]、Chimp128[12]、ELF[13]、ALP[15])。其中ALP采用C++源代码实现，其余算法均使用Java语言编程实现。

评价指标。本文主要考察以下三个关键性能指标：压缩率、压缩时间和解压缩时间。

（1）压缩率（Compression Ratio）：定义为压缩后数据存储空间 与原始数据存储空间 的比值。对于包含 N 个数据块（每个数据块中包含1024个浮点数）的数据集，其计算公式为：

该指标衡量压缩算法对原始数据的压缩效率，其值域为(0,1]，数值越低表示压缩效率越高。

（2）压缩时间（Compression Time）：通过测量算法平均处理每个数据块（每块1024个双精度浮点数）的时间 ，并排除磁盘I/O时间后，计算单位数据块压缩延迟。该指标反映算法的计算效率。

（3）解压缩时间（Decompression Time）：与压缩时间定义对称，该指标表征算法重构原始数据的效率。

对比分析

压缩率

本研究通过18个数据集对APCF的压缩性能进行了系统性评估，其压缩率结果如图4所示。以下从两个方面对实验结果进行分析：

图4 压缩率对比结果

Fig. 4 Comparison of Compression Ratios with Baselines

（1）与通用压缩算法的压缩率对比。实验结果表明，主流通用压缩算法中，Xz、Brotli和Zstd表现最为突出，其平均压缩率分别为0.27、0.31和0.35。相比之下，APCF实现了0.23的平均压缩率，较Xz、Brotli、Zstd分别降低15.2%、24.3%、33.3%。特别地，与LZ4和Snappy相比，APCF的压缩性能提升更为显著，分别达到51.6%和48.2%。在数据集适用性方面，APCF在14个数据集上的表现优于所有对比的通用压缩算法，仅在Air-sensor数据集上表现稍逊。这一结果充分证明了APCF在时间序列数据压缩方面的优越性。

（2）与浮点数无损压缩算法的压缩率对比。在与专用浮点数压缩算法的对比中，APCF的压缩率展现出显著优势。实验数据显示，APCF较Gorilla、Chimp、Chimp128、ELF和ALP分别提升了69.6%、66.1%、38.3%、19.9%和18.2%的压缩率。具体而言，APCF在14个数据集上取得了最优压缩性能，在其余3个数据集上也保持了次优水平。

压缩时间和解压缩时间

图5展示了11个算法处理每个数据块的平均压缩和解压缩时间。ALP有着最优的表现，这是因为其矢量化设计和SIMD指令集优化的结果。相较于通用压缩算法，APCF的压缩时间降低1个数量级，同时保持了更优的压缩率。然而，与Gorilla、Chimp和Elf算法相比，APCF因包含更复杂的预处理流程（在自适应精度时为寻找其最短十进制表示进行大量的乘法操作 [19]），其压缩和解压缩时间略有增加。

图5 压缩和解压缩时间对比

Fig. 5 Comparison Time and Decompression Time

结论

本文提出了一种名为 APCF（Adaptive Precision for Lossless Compression of Floating-Point Time Series）的浮点数时间序列无损压缩算法。APCF 采用“预处理-编码”框架，通过自适应精度计算和编码优化实现高效压缩。在预处理阶段，APCF 自适应地计算浮点数的精度，并基于该精度对浮点数进行整数量化。随后，通过异或操作消除相邻浮点数之间的冗余部分，从而显著缩短存储的有效位长度。在编码阶段，APCF 对基于异或的编码方案中的编码机制进行了改进，将尾部零数量和中心有效位长度的联合复用改为仅复用尾部零数量，并对中心有效位长度进行单独编码。这一改进显著提高了复用概率，进而提升了压缩率。

在实验部分，本文将 APCF 与现有的最先进的通用压缩算法以及浮点数压缩算法进行了对比分析。实验数据集涵盖了 18 个浮点数时间序列。结果表明，APCF 在空间性能上表现出色。与同类型的浮点数压缩算法 ELF 相比，APCF 的压缩率提升了 19.9%；与 ALP 相比，压缩率提升了 18.2%。这些结果表明，APCF 在浮点数时间序列压缩领域具有显著的优势。

对于未来的工作，我们计划研究在损失一定精度的情况下达到更大压缩效率的浮点数压缩。

[参考文献] (References)

[1] Atzori L, Iera A, Morabito G. The internet of things: A survey[J]. Computer networks, 2010, 54(15): 2787-2805.
[2] Collet Y. Zstandard - Fast real-time compression algorithm [EB/OL]. 2016 [2025-01-08].https://github.com/facebook/zstd.
[3] Mizek T. The .xz File Format [EB/OL]. 2023 [2025-3-18]. https://tukaani.org/xz/xz-file-format.txt.
[4] Collet Y. LZ4 - Extremely fast compression [EB/OL]. 2013 [2025-3-18]. https://github.com/lz4/lz4.
[5] M. Oberhumer. Lzo-a real-time data compression library[OL]. [2025-01-28]. http://www.oberhumer.com/opensource/lzo/.
[6] Shannon C E. A mathematical theory of communication[J]. The Bell system technical journal, 1948, 27(3): 379-423.
[7] Shi Y, Zou X, Chen X, et al. Machete: An Efficient Lossy Floating-Point Compressor Designed for Time Series Databases[C]//2024 Data Compression Conference (DCC). IEEE, 2024: 532-541.
[8] Eichinger F, Efros P, Karnouskos S, et al. A time-series compression technique and its application to the smart grid[J]. The VLDB Journal, 2015, 24: 193-218.
[9] Tian J, Di S, Zhao K, et al. Cusz: An efficient gpu-based error-bounded lossy compression framework for scientific data[C]//Proceedings of the ACM International Conference on Parallel Architectures and Compilation Techniques. 2020: 3-15.
[10] Huang Y, Di S, Yu X, et al. cuszp: An ultra-fast gpu error-bounded lossy compression framework with optimized end-to-end performance[C]//Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis. 2023: 1-13.
[11] Pelkonen T, Franklin S, Teller J, et al. Gorilla: A fast, scalable, in-memory time series database[J]. Proceedings of the VLDB Endowment, 2015, 8(12): 1816-1827.
[12] Liakos P, Papakonstantinopoulou K, Kotidis Y. Chimp: efficient lossless floating point compression for time series databases[J]. Proceedings of the VLDB Endowment, 2022, 15(11): 3058-3070.
[13] Li R, Li Z, Wu Y, et al. Elf: Erasing-based lossless floating-point compression[J]. Proceedings of the VLDB Endowment, 2023, 16(7): 1763-1776.
[14] Kuschewski M, Sauerwein D, Alhomssi A, et al. Btrblocks: Efficient columnar compression for data lakes[J]. Proceedings of the ACM on Management of Data, 2023, 1(2): 1-26.
[15] Afroozeh A, Kuffo L X, Boncz P. Alp: Adaptive lossless floating-point compression[J]. Proceedings of the ACM on Management of Data, 2023, 1(4): 1-26.
[16] Google. Protocol Buffers [EB/OL]. 2001 [2025-3-12]. https://protobuf.dev.
[17] Kahan W. IEEE standard 754 for binary floating-point arithmetic[J]. Lecture Notes on the Status of IEEE, 1996, 754(94720-1776): 11.
[18] Burtscher M, Ratanaworabhan P. FPC: A high-speed compressor for double-precision floating-point data[J]. IEEE transactions on computers, 2008, 58(1): 18-31.
[19] Adams U. Ryū: fast float-to-string conversion[C]//Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation. 2018: 270-282.
[20] Roth M A, Van Horn S J. Database compression[J]. ACM sigmod record, 1993, 22(3): 31-39.
[21] National Ecological Observatory Network (NEON). 2D wind speed and direction(DP1.00001.001)．2022．https://data.neonscience.org/data-products/DP1.00001.001/RELEASE-2022.
[22] National Ecological Observatory Network (NEON). Barometric pressure(DP1.00004.001)[EB/OL]．2022．https://data.neonscience.org/data-products/

DP1.00004.001/RELEASE-2022.
[23] InfluxData. Sample data for InfluxDB 2.0 [EB/OL]. 2025 [2025-3-12]. https://github.com/influxdata/influxdb2-sample-data.
[24] Meteoblue. Historical Weather Data Download - Basel,Switzerland [EB/OL]. 2025 [2025-3-12].https://www.meteoblue.com/en/weather/archive/export/basel_switzerland.
[25] Rajkumar S. Daily Temperature of Major Cities [EB/OL]. 2020 [2025-3-12]. https://www.kaggle.com/sudalairajkumar/daily-temperature-of-major-cities.
[26] National Ecological Observatory Network (NEON). Relative humidity above water on-buoy(DP1.20271.001)．2022．https://data.neonscience.org/data-products/DP1.20271.001/RELEASE-2022.
[27] National Ecological Observatory Network (NEON). IR biological temperature(DP1.00005.001)．2022．https://data.neonscience.org/data-products/DP1.00005.001/RELEASE-2022.
[28] National Ecological Observatory Network (NEON). Dust and particulate size distribution(DP1.00017.001)．2022．https://data.neonscience.org/data-products/DP1.00017.001/RELEASE-2022.
[29] Commission E. Financial data set used in INFORE project. 2020. https://doi.org/10.5281/zenodo.3886895.
[30] Google. Snappy: A fast compressor/decompressor [EB/OL]. 2015 [2025-01-08]. https://github.com/google/snappy.
[31] Alakuijala J, Farruggia A, Ferragina P, et al. Brotli: A general-purpose data compressor[J]. ACM Transactions on Information Systems (TOIS), 2018, 37(1): 1-30.

作者简介：刘于溪（2000-），女，硕士，数据压缩

通信联系人：瞿有利（1974-），男，副教授，硕导，人工智能及应用，计算机技术. E-mail: ylqu@bjtu.edu.cn