CN103258030A - 基于字典与游长编码的移动设备内存压缩方法 - Google Patents
基于字典与游长编码的移动设备内存压缩方法 Download PDFInfo
- Publication number
- CN103258030A CN103258030A CN2013101696504A CN201310169650A CN103258030A CN 103258030 A CN103258030 A CN 103258030A CN 2013101696504 A CN2013101696504 A CN 2013101696504A CN 201310169650 A CN201310169650 A CN 201310169650A CN 103258030 A CN103258030 A CN 103258030A
- Authority
- CN
- China
- Prior art keywords
- data
- length
- internal storage
- byte
- encoding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种基于字典与游长编码的移动设备内存压缩方法,主要解决已有的字典编码与游长编码压缩方法对内存数据压缩率低的问题,其实现步骤是:(1)读入内存数据和内存数据长度;(2)判断内存数据是否为可压缩数据,若不是可压缩数据,则直接记录数据长度和数据,若是,则对连续相同字符串采用游长编码压缩格式;(3)对其他普通内存数据则采用字典压缩格式压缩;(4)判断是否压缩到内存数据尾,若是则终止,若不是,则继续读入内存数据。本发明与现有的其他的内存压缩方法相比,压缩率更高,进而能为移动设备内存释放出更多的剩余空间,提高移动设备的运行效率,可用于需要内存压缩的移动设备中。
Description
技术领域
本发明属于数据处理技术领域,涉及设备内存的数据压缩装置,可用在内存受限的嵌入式移动设备中。
背景技术
近年来,随着移动互联网的发展,移动设备越来越成为人们不可或缺的一种日常生活用品,由于移动设备的内存受限,就要求最好能对其内存数据进行压缩,节约内存空间,提高设备的整体性能。现代社会信息量的不断增长,人们对计算机系统的性能也提出了更高的要求,如更高的速度、更低的耗能、更小的体积、能存取更多的信息等等。为了达到上面的各种性能要求,人们提出了各种改进的方法。其中,比较廉价的改进方法之一是数据压缩技术。如若在计算机系统中运用了数据压缩技术,则在数据传输中占用了更小的带宽;在小的移动设备如手机,MP4等电子设备占用的存储空间更小;也可以降低频繁的物理磁盘或闪存与CPU之间的I/O读取,从而延长了存储设备的寿命和节省能耗。鉴于上述技术的各种优点,运用这种简单而廉价的改进计算机系统性能的技术,研究数据压缩技术是很有必要的。
用于移动设备内存数据的压缩算法,要求方法高效,解压缩速度快,适用于内存数据的特点等一系列要求。目前,数据无损压缩方法有很多,而解压缩速度很快,可以达到实时解压缩内存数据的主要有LZO(Lempel-Ziv-Oberhumer)和RLE(run-lengthencoding)两种。
LZO是一种基于字典的数据无损压缩算法,主要通过记录重复字符段的重复位置和重复长度来完成编码。LZO压缩与解压缩速度相当快,而且解压简单,不需要另外开辟内存,可以满足嵌入式设备需要快速解压数据的要求。LZO方法虽然具有解压缩快速等优点,但是它并不完全适用于内存数据的压缩,在压缩长的连续相同字符串时,LZO需要较多的字符去记录数据,因此压缩率不高。
游长编码RLE,又称变动长度编码法,是一种简单的非破坏性资料压缩法,其好处是压缩和解压缩都非常快,特别是对于压缩长的连续相同字符串,相比于LZO,其可以用更少的字符去记录,但在普通数据的压缩上,其效果并不如LZO。
发明内容
本发明目的在于克服已有的字典编码与游长编码压缩方法对内存数据压缩率低的缺点,在基本保证其压缩和解压缩速度的前提下,结合两者各自的优点,提出一种基于字典与游长编码的内存压缩方法,以提高整体的压缩率。
实现本发明的基本思想是:根据要压缩的内存数据特点选择字典压缩格式或游长编码压缩格式,用字典编码方法压缩一般重复字符串,用游长编码压缩长的连续相同字符串,并针对长的连续相同字符串设计游长编码的压缩格式。其具体实现步骤包括如下:
(1)读取移动设备中的内存数据与内存数据的长度;
(2)判断所读数据是否为新数据,若所读数据没有记录在哈希表中,则判为新数据,并把该新数据计入哈希表中,继续读取内存数据,直到未出现新数据为止,执行步骤(3)对所读数据直接进行压缩编码;
(3)根据内存数据形式确定编码方式:
3a)对于长度长于4的重复相同字符串,将其长度先与数值255比较,再进行压缩:
如果该字符串的长度小于255,将第一个字节记录为标志位,将第二个字节直接记录重复的长度;
如果该字符串的长度大于等于255,将第一个字节记录为标志位,将第二个字节记录为0,将第三个字节记录为255的整倍数,将第四个字节记录为除去255的整数倍剩余的字符串的长度;
3b)对于普通的重复字符串,即除了长度长于4的重复相同字符串以外的其他重复字符串,则用字典编码;
(4)判断是否编到内存数据结尾,若是,则输出压缩后数据和压缩后数据的长度,并记下结束标志,否则,返回步骤(2),继续读入新数据。
本发明与现有的其他的内存压缩方法相比,由于其能对重复相同字符串用更少的字节去压缩,所以压缩率比其他方法更高,进而能为移动设备内存释放出更多的剩余空间,提高了移动设备的运行效率。
附图说明
图1是本发明的流程图;
图2是本发明中的新字符记录子流程图;
图3是本发明中的压缩编码子流程图。
具体实施方式
下面结合附图1对本发明作进一步详细描述:
步骤一:读入内存数据长度,按内存数据的长度开辟存储空间,将移动设备的内存数据读入所开辟的存储空间,再为哈希表开辟存储空间。
步骤二:取内存数据的四个字元做哈希运算,按所计算的哈希值从哈希表中取出数据与新字符对比,若相同,则说明数据在哈希表内,不是新字符,执行步骤三,若不相同,则把新字符计入哈希表,执行步骤五;
步骤三:记录新字符。
参照图2,本步骤的具体实现如下:
(3a)计算新字符的长度,如果新字符长度小于3个,由上一个编码格式的倒数第二个字节来记录长度,然后执行步骤(3d)记录新字符,否则,执行步骤(3b);
(3b)若是新字符长度小于17大于3个,记下新字符长度减3,然后执行步骤(3d)记录新字符,否则,执行步骤(3c);
(3c)若是新字符长度大于17,则先记录一个0,再记录新字符长度减去17的差值,如该差值大于255,则在第一个0后再记录一个0,同时把差值再减去255得到新的差值,再把新的差值继续与255比较,直到最后的差值小于255时,记下最后的差值,然后执行步骤(3d)记录新字符;
(3d)记录新字符,并执行步骤四。
步骤四:压缩编码。
参照图3,本压缩编码步骤主要分为两种情况:
第一种情况:对于长度长于4的重复0字符串,将其长度先与数值255比较后,再进行如下压缩:
如果该字符串的长度小于255,将第一个字节记录为标志位,将第二个字节直接记录重复的长度;
如果该字符串的长度大于等于255,将第一个字节记录为标志位,将第二个字节记录为0,将第三个字节记录为255的整倍数,将第四个字节记录为除去255的整数倍剩余的字符串的长度。
第二种情况:对于其他的普通字符串用字典编码,可采用目前通用方法有LZ(Lempel Ziv)字典编码方法、LZSS(Lempel Ziv Storer Szymanski)字典编码方法和LZO(Lempel Ziv Oberhumer)字典编码方法等,本实例采用但不局限于使用LZO方法,其编码格式有如下五种:
由字符串重复长度和指回距离选用LZO编码格式,该指回距离,是指字元当前位置与哈希表内记录位置之间的距离:
对于字符串重复长度小于8,且指回距离小于2K的内存数据,将第一个字节记录为长度,将第二个字元记录为字元当前位置与哈希表内记录位置之间的距离;
对于字符串重复长度小于8,且指回距离小于16K的内存数据,将第一个字节记录为长度,将第二个和第三个字节记录为字元当前位置与哈希表内记录位置之间的距离;
对于字符串重复长度小于8,且指回距离小于48K的内存数据,将第一个字节最后3个比特记录为长度,将第一个字节第4比特、第二个字节和第三个字节记录为字元当前位置与哈希表内记录位置之间的距离;
对于字符串重复长度大于8,且指回距离小于16K的内存数据,将前两个字节记录为重复长度,将后两个字节记录为字元当前位置与哈希表内记录位置之间的距离;
对于字符串重复长度大于8,且指回距离小于48K的内存数据,将前两个字节记录为重复长度,将后两个字节记录为字元当前位置与哈希表内记录位置之间的距离。
步骤五:检查内存数据的下一个字元是否编到数据结尾,如果是,则执行步骤六,否则,返回步骤二。
步骤六:记录结束标志,输出压缩后内存数据和内存数据的长度。
本发明的效果可以通过以下实验进一步说明:
本实验采用C语言来编写发明所提出的压缩方法,通过比较本发明与传统LZO字典方法对内存数据页的压缩效果,来说明本发明方法压缩率高的优点。本实验所采用的内存数据为典型移动设备的4K大小的内存数据页,压缩结果如表1,表1中数据为对内存数据页压缩编码后的数据大小,数值越小,说明压缩率越高。
内存数据 | LZO压缩大小 | 本发明压缩大小 | 提高率 |
0001 | 387 | 369 | 5% |
0002 | 905 | 864 | 5% |
0003 | 1583 | 1544 | 2% |
0004 | 1102 | 1016 | 8% |
0005 | 1183 | 1141 | 4% |
0006 | 1933 | 1924 | 0% |
0007 | 1007 | 994 | 1% |
0008 | 28 | 12 | 57% |
0009 | 691 | 672 | 3% |
0010 | 936 | 893 | 5% |
0011 | 900 | 858 | 5% |
0012 | 888 | 833 | 6% |
0013 | 809 | 757 | 6% |
0014 | 1772 | 1757 | 1% |
表1
从表1中可知,本发明方法相对于现有的LZO压缩编码方法,在压缩率上均有提高,特别是内存数据页的数值全为0时,压缩率能提高57%之多。由于本发明方法对内存数据的压缩率更高,所以能为移动设备内存释放出更多的剩余空间,提高了移动设备的整体运行效率。
Claims (2)
1.一种基于字典与游长编码的移动设备内存压缩方法,包括以下步骤:
(1)读取移动设备中的内存数据与内存数据的长度;
(2)判断所读数据是否为新数据,若所读数据没有记录在哈希表中,则判为新数据,并把该新数据计入哈希表中,继续读取内存数据,直到未出现新数据为止,执行步骤(3)对所读数据直接进行压缩编码;
(3)根据内存数据形式确定编码方式:
3a)对于长度长于4的重复相同字符串,将其长度先与数值255比较,再进行压缩:
如果该字符串的长度小于255,将第一个字节记录为标志位,将第二个字节直接记录重复的长度;
如果该字符串的长度大于等于255,将第一个字节记录为标志位,将第二个字节记录为0,将第三个字节记录为255的整倍数,将第四个字节记录为除去255的整数倍剩余的字符串的长度;
3b)对于普通的重复字符串,即除了长度长于4的重复相同字符串以外的其他重复字符串,则用字典编码;
(4)判断是否编到内存数据结尾,若是,则输出压缩后数据和压缩后数据的长度,并记下结束标志,否则,返回步骤(2),继续读入新数据。
2.根据权利要求1所述,其中所述步骤3b)中用字典编码,根据重复长度和指回距离,即字元当前位置与哈希表内记录位置之间的距离,选用不同的编码格式进行编码:
对于字符串重复长度小于8,且指回距离小于2K的内存数据,将第一个字节记录为长度,将第二个字元记录为当前位置与哈希表内记录位置之间的距离;
对于字符串重复长度小于8,且指回距离小于16K的内存数据,将第一个字节记录为长度,将第二个和第三个字节记录为字元当前位置与哈希表内记录位置之间的距离;
对于字符串重复长度小于8,且指回距离小于48K的内存数据,将第一个字节最后3个比特记录为长度,将第一个字节第4比特、第二个字节和第三个字节记录为字元当前位置与哈希表内记录位置之间的距离;
对于字符串重复长度大于8,且指回距离小于16K的内存数据,将前两个字节记录为重复长度,将后两个字节记录为字元当前位置与哈希表内记录位置之间的距离;
对于字符串重复长度大于8,且指回距离小于48K的内存数据,将前两个字节记录为重复长度,将后两个字节记录为字元当前位置与哈希表内记录位置之间的距离。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310169650.4A CN103258030B (zh) | 2013-05-09 | 2013-05-09 | 基于字典与游长编码的移动设备内存压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310169650.4A CN103258030B (zh) | 2013-05-09 | 2013-05-09 | 基于字典与游长编码的移动设备内存压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103258030A true CN103258030A (zh) | 2013-08-21 |
CN103258030B CN103258030B (zh) | 2016-04-13 |
Family
ID=48961947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310169650.4A Expired - Fee Related CN103258030B (zh) | 2013-05-09 | 2013-05-09 | 基于字典与游长编码的移动设备内存压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103258030B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103618554A (zh) * | 2013-12-01 | 2014-03-05 | 西安电子科技大学 | 基于字典的内存页面压缩方法 |
CN103970256A (zh) * | 2014-04-22 | 2014-08-06 | 中国科学院计算技术研究所 | 一种基于内存压缩和cpu动态调频的节能方法及系统 |
CN104378119A (zh) * | 2014-12-09 | 2015-02-25 | 西安电子科技大学 | 嵌入式设备文件系统数据的快速无损压缩方法 |
CN104410424A (zh) * | 2014-11-26 | 2015-03-11 | 西安电子科技大学 | 嵌入式设备内存数据的快速无损压缩方法 |
CN104753539A (zh) * | 2013-12-26 | 2015-07-01 | 中国移动通信集团公司 | 一种数据压缩方法及装置 |
CN105629155A (zh) * | 2015-12-28 | 2016-06-01 | 中国科学院声学研究所 | 一种测试数据的字典编码方法 |
CN106685429A (zh) * | 2016-12-29 | 2017-05-17 | 广州华多网络科技有限公司 | 整数压缩方法及装置 |
CN107943424A (zh) * | 2017-12-18 | 2018-04-20 | 苏州蜗牛数字科技股份有限公司 | 一种网络游戏中方块地形信息的压缩方法 |
CN108694159A (zh) * | 2017-04-07 | 2018-10-23 | 富士通株式会社 | 编码方法和编码装置 |
CN108737976A (zh) * | 2018-05-22 | 2018-11-02 | 南京大学 | 一种基于北斗短报文的压缩传输方法 |
CN111342844A (zh) * | 2020-02-28 | 2020-06-26 | 中船重工鹏力(南京)大气海洋信息系统有限公司 | 一种基于lzw编码与改进游程编码的雷达数据无损压缩及解压方法 |
CN115934730A (zh) * | 2023-01-09 | 2023-04-07 | 阿里云计算有限公司 | 数据处理方法和装置、介质和计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786939A (zh) * | 2005-11-10 | 2006-06-14 | 浙江中控技术有限公司 | 实时数据压缩方法 |
US20080281984A1 (en) * | 2007-05-09 | 2008-11-13 | Nortel Networks Limited | Hub and spoke compression |
CN102112986A (zh) * | 2008-07-31 | 2011-06-29 | 微软公司 | 对基于列的数据编码的结构的高效的大规模处理 |
US20120150877A1 (en) * | 2010-12-09 | 2012-06-14 | Microsoft Corporation | Efficient database compression |
-
2013
- 2013-05-09 CN CN201310169650.4A patent/CN103258030B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786939A (zh) * | 2005-11-10 | 2006-06-14 | 浙江中控技术有限公司 | 实时数据压缩方法 |
US20080281984A1 (en) * | 2007-05-09 | 2008-11-13 | Nortel Networks Limited | Hub and spoke compression |
CN102112986A (zh) * | 2008-07-31 | 2011-06-29 | 微软公司 | 对基于列的数据编码的结构的高效的大规模处理 |
US20120150877A1 (en) * | 2010-12-09 | 2012-06-14 | Microsoft Corporation | Efficient database compression |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103618554A (zh) * | 2013-12-01 | 2014-03-05 | 西安电子科技大学 | 基于字典的内存页面压缩方法 |
CN103618554B (zh) * | 2013-12-01 | 2016-07-06 | 西安电子科技大学 | 基于字典的内存页面压缩方法 |
CN104753539A (zh) * | 2013-12-26 | 2015-07-01 | 中国移动通信集团公司 | 一种数据压缩方法及装置 |
CN103970256A (zh) * | 2014-04-22 | 2014-08-06 | 中国科学院计算技术研究所 | 一种基于内存压缩和cpu动态调频的节能方法及系统 |
CN103970256B (zh) * | 2014-04-22 | 2017-02-15 | 中国科学院计算技术研究所 | 一种基于内存压缩和cpu动态调频的节能方法及系统 |
CN104410424A (zh) * | 2014-11-26 | 2015-03-11 | 西安电子科技大学 | 嵌入式设备内存数据的快速无损压缩方法 |
CN104410424B (zh) * | 2014-11-26 | 2017-06-16 | 西安电子科技大学 | 嵌入式设备内存数据的快速无损压缩方法 |
CN104378119B (zh) * | 2014-12-09 | 2017-06-13 | 西安电子科技大学 | 嵌入式设备文件系统数据的快速无损压缩方法 |
CN104378119A (zh) * | 2014-12-09 | 2015-02-25 | 西安电子科技大学 | 嵌入式设备文件系统数据的快速无损压缩方法 |
CN105629155A (zh) * | 2015-12-28 | 2016-06-01 | 中国科学院声学研究所 | 一种测试数据的字典编码方法 |
CN105629155B (zh) * | 2015-12-28 | 2018-08-17 | 中国科学院声学研究所 | 一种测试数据的字典编码方法 |
CN106685429A (zh) * | 2016-12-29 | 2017-05-17 | 广州华多网络科技有限公司 | 整数压缩方法及装置 |
CN106685429B (zh) * | 2016-12-29 | 2020-07-10 | 广州华多网络科技有限公司 | 整数压缩方法及装置 |
CN108694159A (zh) * | 2017-04-07 | 2018-10-23 | 富士通株式会社 | 编码方法和编码装置 |
CN107943424A (zh) * | 2017-12-18 | 2018-04-20 | 苏州蜗牛数字科技股份有限公司 | 一种网络游戏中方块地形信息的压缩方法 |
CN108737976A (zh) * | 2018-05-22 | 2018-11-02 | 南京大学 | 一种基于北斗短报文的压缩传输方法 |
CN108737976B (zh) * | 2018-05-22 | 2021-05-04 | 南京大学 | 一种基于北斗短报文的压缩传输方法 |
CN111342844A (zh) * | 2020-02-28 | 2020-06-26 | 中船重工鹏力(南京)大气海洋信息系统有限公司 | 一种基于lzw编码与改进游程编码的雷达数据无损压缩及解压方法 |
CN111342844B (zh) * | 2020-02-28 | 2023-06-27 | 中船鹏力(南京)大气海洋信息系统有限公司 | 一种基于lzw编码与改进游程编码的雷达数据无损压缩及解压方法 |
CN115934730A (zh) * | 2023-01-09 | 2023-04-07 | 阿里云计算有限公司 | 数据处理方法和装置、介质和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103258030B (zh) | 2016-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103258030A (zh) | 基于字典与游长编码的移动设备内存压缩方法 | |
CN103236847B (zh) | 基于多层哈希结构与游程编码的数据无损压缩方法 | |
US9077368B2 (en) | Efficient techniques for aligned fixed-length compression | |
US9390099B1 (en) | Method and apparatus for improving a compression ratio of multiple documents by using templates | |
CN103067022B (zh) | 一种整型数据无损压缩方法、解压缩方法及装置 | |
WO2019153700A1 (zh) | 编解码方法、装置及编解码设备 | |
CN104410424B (zh) | 嵌入式设备内存数据的快速无损压缩方法 | |
US8407378B2 (en) | High-speed inline data compression inline with an eight byte data path | |
CN112953550B (zh) | 数据压缩的方法、电子设备及存储介质 | |
US8400335B2 (en) | Using variable length code tables to compress an input data stream to a compressed output data stream | |
CN103326732A (zh) | 压缩数据的方法、解压数据的方法、编码器和解码器 | |
CN106202213B (zh) | 一种fpga二进制文件压缩、解压方法及压缩、解压装置 | |
CN101783788A (zh) | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 | |
US20200294629A1 (en) | Gene sequencing data compression method and decompression method, system and computer-readable medium | |
CA3030189C (en) | High-density compression method and computing system | |
US10303402B2 (en) | Data compression using partial statistics | |
CN101667843B (zh) | 嵌入式系统的数据压缩、及解压缩方法与装置 | |
CN104125458A (zh) | 内存数据无损压缩方法及装置 | |
KR101866151B1 (ko) | 적응형 레이트 압축 해시 프로세싱 디바이스 | |
US20160233880A1 (en) | Data compression apparatus and data decompression apparatus | |
CN116170027B (zh) | 一种毒检设备数据管理系统及处理方法 | |
CN102904580B (zh) | X-bit压缩编码算法 | |
CN105512120A (zh) | 一种地震数据压缩方法、压缩存储结构及随机访问方法 | |
CN103618554B (zh) | 基于字典的内存页面压缩方法 | |
CN104125475A (zh) | 一种多维量子数据压缩、解压缩方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160413 Termination date: 20170509 |