本發(fā)明屬于通信技術(shù)領(lǐng)域,更進(jìn)一步涉及無(wú)損數(shù)據(jù)壓縮技術(shù)領(lǐng)域中的一種基于gzip(gunzip)硬件實(shí)現(xiàn)文本壓縮方法。本發(fā)明采用并行處理窗口對(duì)文本信息進(jìn)行處理并且以全流水結(jié)構(gòu)完成文本壓縮處理,可用于優(yōu)化文本壓縮編碼硬件實(shí)現(xiàn)方法,尤其適用于實(shí)時(shí)文本壓縮處理。
背景技術(shù):
隨著大數(shù)據(jù)時(shí)代的來(lái)臨,大量多媒體數(shù)據(jù)需要在網(wǎng)絡(luò)上進(jìn)行傳輸,需要占用大量的網(wǎng)絡(luò)資源,因此數(shù)據(jù)壓縮技術(shù)方面的研究十分重要。gzip作為目前最流行的無(wú)損壓縮方法,被廣泛應(yīng)用于網(wǎng)絡(luò)資料下載和數(shù)據(jù)備份等領(lǐng)域。
gzip文本壓縮方法目前最知名的實(shí)現(xiàn)版本存在于由jean-loupgailly和markadler共同開發(fā)的開源zlib庫(kù)中,但是該版本是基于傳統(tǒng)的軟件實(shí)現(xiàn)方法,對(duì)數(shù)據(jù)進(jìn)行順序處理。該方法存在的不足之處是:該方法在分析數(shù)據(jù)和壓縮編碼的過(guò)程都需要進(jìn)行大量的計(jì)算以及查找,這樣的順序執(zhí)行以及大量的運(yùn)算量,導(dǎo)致處理速度緩慢。
m.s,abdelfattah、a.hagiescu和d.singh在其發(fā)表的論文“gziponachip:highperformancelosslessdatacompressiononfpgasusingopencl”(ininternationalworkshoponopencl.2014:4)中提出了一種基于異構(gòu)計(jì)算實(shí)現(xiàn)文本壓縮的方法。該方法提供了一種通過(guò)異構(gòu)語(yǔ)言將中央處理器與硬件器件聯(lián)合處理的文本壓縮實(shí)現(xiàn)結(jié)構(gòu)。其中包含的適用于硬件實(shí)現(xiàn)的文本壓縮方法,將原有串行文本壓縮結(jié)構(gòu)修改為并行處理結(jié)構(gòu),相比于原有軟件實(shí)現(xiàn)方法的處理速度有所提升。該方法存在的不足之處是:該方法使用異構(gòu)計(jì)算進(jìn)行實(shí)現(xiàn)本文壓縮,對(duì)硬件實(shí)現(xiàn)部分沒(méi)有實(shí)現(xiàn)流水結(jié)構(gòu),導(dǎo)致該方法仍然存在一定的時(shí)鐘延遲導(dǎo)致處理吞吐率有所降低。而且該算法只適用于文本壓縮中固定大小的計(jì)算單元,導(dǎo)致適用規(guī)模單一,不能滿足對(duì)不同壓縮比以及不同硬件資源規(guī)模消耗的需求。
s.rigler、w.bishop和a.kennings在其發(fā)表的論文“fpga-basedlosslessdatacompressionusinghuffmanandlz77algorithms”(inproceedingsofthecanadianconferenceonelectricalandcomputerengineering(ccece),pages1235-1238,april2007)中提出了一種基于硬件編碼語(yǔ)言vhdl對(duì)字典壓縮lz77編碼以及哈夫曼編碼的硬件實(shí)現(xiàn)方法。該方法通過(guò)對(duì)應(yīng)軟件代碼的實(shí)現(xiàn)方案,將文本壓縮中關(guān)鍵兩部分:字典壓縮部分以及哈夫曼編碼部分進(jìn)行硬件實(shí)現(xiàn)。該方法存在的不足之處在于:對(duì)字典壓縮和哈夫曼編碼的硬件實(shí)現(xiàn)過(guò)程采用順序執(zhí)行方法,并沒(méi)有進(jìn)行結(jié)構(gòu)的優(yōu)化,處理過(guò)程耗費(fèi)大量時(shí)鐘周期。而且該方法只對(duì)文本壓縮中兩個(gè)關(guān)鍵步驟進(jìn)行硬件實(shí)現(xiàn),并沒(méi)有實(shí)現(xiàn)完整的文本壓縮硬件實(shí)現(xiàn)方法。
中國(guó)農(nóng)業(yè)銀行股份有限公司申請(qǐng)的專利“文本壓縮方法及裝置”(專利申請(qǐng)?zhí)枺?01610476295.9,公開號(hào):106202172a)中公開了一種文本壓縮方法,該方法應(yīng)用分布集群中的多個(gè)機(jī)器節(jié)點(diǎn)并行執(zhí)行該文本壓縮方法,該方法從原始文本文件中,提取采樣詞組,為每個(gè)采樣詞組設(shè)置對(duì)應(yīng)的編碼,采樣詞組與編碼之間的對(duì)應(yīng)關(guān)系作為映射函數(shù),為每個(gè)采樣詞組設(shè)置其對(duì)應(yīng)的編碼。采樣詞組與編碼之間的對(duì)應(yīng)關(guān)系可以作為映射函數(shù),使用映射函數(shù)對(duì)原始文本進(jìn)行整體壓縮。該專利申請(qǐng)存在的不足之處是:僅僅是利用采樣詞組構(gòu)成的映射函數(shù)對(duì)文本進(jìn)行整體壓縮,文本壓縮方法單一,導(dǎo)致壓縮比較低。而且文本壓縮采樣順序執(zhí)行方式,在對(duì)每個(gè)文本采樣順序執(zhí)行方式,壓縮處理過(guò)程耗費(fèi)大量的時(shí)鐘周期,導(dǎo)致處理速度緩慢。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于針對(duì)上述已有技術(shù)的不足,提出一種基于gzip硬件實(shí)現(xiàn)文本壓縮方法。該方法通過(guò)字典查找和哈夫曼編碼的方式,將文本進(jìn)行壓縮。采取適用于硬件實(shí)現(xiàn)的處理結(jié)構(gòu),將待處理的文本原有的順序執(zhí)行方式通過(guò)修剪了重疊字符,實(shí)現(xiàn)了改為同一窗口中字符串的同時(shí)匹配處理,優(yōu)化了壓縮結(jié)構(gòu),提高處理速度。
為了實(shí)現(xiàn)上述目的,本發(fā)明的思路是將原有文本壓縮結(jié)構(gòu)重新設(shè)計(jì),采用并行處理窗口對(duì)文本信息進(jìn)行處理并且以全流水結(jié)構(gòu)完成文本壓縮處理。依次進(jìn)行讀入待壓縮的文件,進(jìn)行字典更新,字典查找實(shí)現(xiàn)匹配,哈夫曼編碼,哈夫曼碼流輸出,最終輸出壓縮后的文件,實(shí)現(xiàn)了對(duì)文件壓縮的流水處理。本發(fā)明采用字典查找和哈夫曼編碼聯(lián)合壓縮的方法,將字典中的歷史字符串作為待匹配字符串,對(duì)修剪匹配對(duì)替換匹配字符串,在完成文本匹配壓縮的基礎(chǔ)上,再對(duì)匹配壓縮字符串進(jìn)行靜態(tài)哈夫曼編碼得到最終的壓縮碼流。
為實(shí)現(xiàn)本發(fā)明目的的具體步驟如下:
(1)讀入待壓縮文本:
(1a)依次將待壓縮文本中自定義緩存深度大小的文本塊,讀入到緩存器1中;
(1b)依次將未讀入的自定義緩存深度大小的文本塊,讀入到緩存器2中的同時(shí),將緩存器1中的文本塊讀入到文本壓縮處理器中;
(1c)用依次讀入自定義緩存深度大小的文本塊更新緩存器1中存儲(chǔ)的文本塊,在更新緩存器1的同時(shí),將緩存器2中的文本塊讀入到文本壓縮處理器中;
(1d)重復(fù)以上兩個(gè)步驟,直到將待壓縮文本中所有文本塊讀入到文本壓縮處理器中;
(2)計(jì)算字典存儲(chǔ)地址:
(2a)依次將讀入文本塊中長(zhǎng)度為八字節(jié)的自定義個(gè)數(shù)字符串進(jìn)行編號(hào),取出每個(gè)字符串中的前六個(gè)字符作為計(jì)算單元,對(duì)計(jì)算單元同時(shí)進(jìn)行異或運(yùn)算,得到字符串存放的索引值;
(2b)將索引值按照存放字符串的字典位置數(shù)進(jìn)行取余操作,將得到的余數(shù)作為字符串在字典中對(duì)應(yīng)的存儲(chǔ)地址標(biāo)號(hào);
(3)標(biāo)記存儲(chǔ)地址標(biāo)號(hào)有效信息:
(3a)判斷同時(shí)處理的自定義個(gè)數(shù)字符串是否存在一樣的存儲(chǔ)地址標(biāo)號(hào),若是,執(zhí)行步驟(3b),否則,執(zhí)行步驟(3c);
(3b)將存儲(chǔ)地址標(biāo)號(hào)一樣的字符串中編號(hào)最小的字符串對(duì)應(yīng)的存儲(chǔ)地址信息標(biāo)記為有效信息,將其余存儲(chǔ)地址信息標(biāo)記為無(wú)效信息;
(3c)將所有字符串的存儲(chǔ)地址標(biāo)號(hào)標(biāo)記為有效信息;
(4)查找歷史字符串:
(4a)在字典存儲(chǔ)器內(nèi)查找與有效信息的字典存儲(chǔ)地址對(duì)應(yīng)的歷史字符串;
(4b)將查找到歷史字符串作為待匹配字符串;
(5)更新字典信息:
(5a)將字典存儲(chǔ)器內(nèi)與有效信息的字典存儲(chǔ)地址對(duì)應(yīng)的信息更新為當(dāng)前待壓縮的字符串;
(5b)將地址存放存儲(chǔ)器內(nèi)與有效信息的字典存儲(chǔ)地址對(duì)應(yīng)的信息更新為當(dāng)前待壓縮字符串的位置信息;
(6)判斷在字典存儲(chǔ)器查找中是否存在待匹配字符串,若是,則執(zhí)行步驟(7),否則,直接執(zhí)行步驟(9);
(7)匹配字符串:
(7a)將查找到的歷史字符串作為待匹配字符串;
(7b)將當(dāng)前待壓縮字符串與待匹配字符串兩者之間連續(xù)相同字符的個(gè)數(shù)記為匹配長(zhǎng)度;
(7c)讀出地址存儲(chǔ)器內(nèi)與有效信息的字典存儲(chǔ)地址對(duì)應(yīng)的位置信息,作為待匹配位置信息;
(7d)對(duì)待壓縮字符串的位置信息與待匹配位置信息做差,將其值作為匹配距離;
(7e)找出所有匹配長(zhǎng)度大于等于三的待壓縮字符串作為匹配成功字符串;
(8)修剪匹配字符串:
(8a)將匹配成功字符串對(duì)應(yīng)編號(hào)值與其自身的匹配長(zhǎng)度求和,將和值作為匹配延伸距離;
(8b)將同時(shí)處理自定義個(gè)數(shù)的計(jì)算單元中,匹配延伸距離最長(zhǎng)的匹配成功字符串,作為最長(zhǎng)匹配字符串;
(8c)將匹配成功字符串中的字符與最長(zhǎng)匹配字符串中字符相互重疊的個(gè)數(shù),作為重疊數(shù);
(8d)對(duì)重疊數(shù)不為零的匹配成功字符串的匹配長(zhǎng)度與其重疊數(shù)作差,將差值作為修剪匹配長(zhǎng)度;
(8e)找出修剪匹配長(zhǎng)度大于等于三對(duì)應(yīng)的匹配成功字符串作為壓縮字符串;
(8f)將壓縮字符串對(duì)應(yīng)的修剪匹配長(zhǎng)度和匹配距離組成修剪匹配對(duì);
(8g)用修剪匹配對(duì)替換匹配成功字符串,得到修剪后的匹配字符串;
(8h)將修剪后的匹配字符串與未處理字符串組成匹配壓縮文本;
(9)將得到的匹配壓縮文本輸入到哈夫曼編碼處理器,進(jìn)行碼流壓縮處理;
(10)獲得長(zhǎng)度哈夫曼碼流:
(10a)對(duì)未匹配替換的待壓縮字符串中的字符,用信息交換標(biāo)準(zhǔn)代碼ascii轉(zhuǎn)換為對(duì)應(yīng)的數(shù)值,將該數(shù)值作為靜態(tài)哈夫曼長(zhǎng)度查找表的字符索引值;
(10b)對(duì)修剪后的匹配字符串,將匹配長(zhǎng)度值作為靜態(tài)哈夫曼長(zhǎng)度查找表的長(zhǎng)度索引值;
(10c)將未匹配替換的待壓縮字符串和修剪后的匹配字符串統(tǒng)作為待處理字符串;
(10d)將靜態(tài)哈夫曼長(zhǎng)度查找表中字符索引值的碼字,作為待處理字符的長(zhǎng)度哈夫曼碼字;
(10e)將靜態(tài)哈夫曼長(zhǎng)度查找表中長(zhǎng)度索引值的碼字,作為待處理字符的長(zhǎng)度哈夫曼碼字;
(11)獲得距離哈夫曼碼流:
(11a)將未替換的待壓縮字符串中的字符的匹配距離設(shè)置為零;
(11b)將待處理字符串的匹配距離值作為靜態(tài)哈夫曼距離查找表的距離索引值;
(11c)將靜態(tài)哈夫曼距離查找表中距離索引值對(duì)應(yīng)的碼字作為距離哈夫曼碼字;
(12)輸出壓縮碼流:
(12a)將待處理字符串的長(zhǎng)度哈夫曼碼字和距離哈夫曼碼字組成匹配壓縮文本的壓縮碼流;
(12b)將壓縮碼流輸出到壓縮文件存儲(chǔ)器。
本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點(diǎn):
第一,本發(fā)明采用將得到的匹配壓縮文本再輸入到哈夫曼編碼處理器,進(jìn)行碼流壓縮處理的方式,克服了現(xiàn)有技術(shù)中文本壓縮方法單一的問(wèn)題,使得本發(fā)明優(yōu)化了文本的壓縮過(guò)程,提高了壓縮比。
第二,本發(fā)明采用將待壓縮文本中的計(jì)算單元同時(shí)進(jìn)行處理方式,克服了現(xiàn)有技術(shù)中順序執(zhí)行結(jié)構(gòu)處理導(dǎo)致處理速度緩慢的問(wèn)題,使得本發(fā)明合理地安排了數(shù)據(jù)處理順序,易于fpga以流水結(jié)構(gòu)完成文本壓縮的并行處理。
第三,本發(fā)明采用待壓縮文本自定義個(gè)數(shù)的字符串作為計(jì)算單元進(jìn)行處理,克服了現(xiàn)有技術(shù)中只適用于固定大小的計(jì)算單元處理方式,使得本發(fā)明可以適用于不同規(guī)模的fpga開發(fā)環(huán)境。滿足對(duì)不同壓縮比和不同硬件資源規(guī)模消耗的需求。
第四,本發(fā)明完成從待壓縮文件處理到壓縮后的將壓縮碼流輸出到壓縮文件存儲(chǔ)器的結(jié)構(gòu)設(shè)計(jì),對(duì)文本壓縮的整個(gè)處理流程進(jìn)行了實(shí)現(xiàn),克服了現(xiàn)有技術(shù)中只對(duì)文本壓縮中兩個(gè)關(guān)鍵步驟進(jìn)行硬件實(shí)現(xiàn),并沒(méi)有實(shí)現(xiàn)完整的文本壓縮硬件實(shí)現(xiàn)的問(wèn)題,使得本發(fā)明可以實(shí)現(xiàn)完整的文本壓縮的硬件方案,加快了文本壓縮處理速度。
附圖說(shuō)明
圖1為本發(fā)明的流程圖;
圖2為本發(fā)明待壓縮文件讀入示意圖;
圖3為本發(fā)明同時(shí)處理待壓縮文本中字符串結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步的描述。
參照?qǐng)D1,本發(fā)明的具體實(shí)施步驟如下。
步驟1,讀入待壓縮文本。
下面結(jié)合圖2對(duì)本發(fā)明的讀入待壓縮文本過(guò)程作進(jìn)一步的描述。
圖2中的實(shí)線和虛線分別表示不同的讀取周期,其中實(shí)線代表奇數(shù)倍的讀取周期,虛線代表偶數(shù)倍的讀取周期,依次將待壓縮文本中自定義緩存深度大小的文本塊,讀入到緩存器1中。
依次將未讀入的自定義緩存深度大小的文本塊,讀入到緩存器2中的同時(shí),將緩存器1中的文本塊讀入到文本壓縮處理器中。
用依次讀入自定義緩存深度大小的文本塊更新緩存器1中存儲(chǔ)的文本塊,在更新緩存器1的同時(shí),將緩存器2中的文本塊讀入到文本壓縮處理器中。
重復(fù)以上兩個(gè)步驟,直到將待壓縮文本中所有文本塊讀入到文本壓縮處理器中。
步驟2,計(jì)算字典存儲(chǔ)地址。
下面結(jié)合圖3對(duì)計(jì)算單元編號(hào)過(guò)程作進(jìn)一步描述。
為了便于說(shuō)明,圖3中將自定義個(gè)數(shù)設(shè)置為8,對(duì)8個(gè)字符串依次設(shè)置為編號(hào)1到8的計(jì)算單元。依次將讀入文本塊中長(zhǎng)度為八字節(jié)的自定義個(gè)數(shù)字符串進(jìn)行編號(hào),取出每個(gè)字符串中的前六個(gè)字符作為計(jì)算單元,對(duì)計(jì)算單元同時(shí)進(jìn)行異或運(yùn)算,得到字符串存放的索引值。
將索引值按照存放字符串的字典位置數(shù)進(jìn)行取余操作,將得到的余數(shù)作為字符串在字典中對(duì)應(yīng)的存儲(chǔ)地址標(biāo)號(hào)。
步驟3,標(biāo)記存儲(chǔ)地址標(biāo)號(hào)有效信息。
第一步,判斷同時(shí)處理的自定義個(gè)數(shù)字符串是否存在一樣的存儲(chǔ)地址標(biāo)號(hào),若是,執(zhí)行第二步,否則,執(zhí)行第三步。
第二步,將存儲(chǔ)地址標(biāo)號(hào)一樣的字符串中編號(hào)最小的字符串對(duì)應(yīng)的存儲(chǔ)地址信息標(biāo)記為有效信息,將其余存儲(chǔ)地址信息標(biāo)記為無(wú)效信息。
第三步,將所有字符串的存儲(chǔ)地址標(biāo)號(hào)標(biāo)記為有效信息。
步驟4,查找歷史字符串。
在字典存儲(chǔ)器內(nèi)查找與有效信息的字典存儲(chǔ)地址對(duì)應(yīng)的歷史字符串。
將查找到歷史字符串作為待匹配字符串。
步驟5,更新字典信息。
將字典存儲(chǔ)器內(nèi)與有效信息的字典存儲(chǔ)地址對(duì)應(yīng)的信息更新為當(dāng)前待壓縮的字符串。
將地址存放存儲(chǔ)器內(nèi)與有效信息的字典存儲(chǔ)地址對(duì)應(yīng)的信息更新為當(dāng)前待壓縮字符串的位置信息。
步驟6,判斷在字典存儲(chǔ)器查找中是否存在待匹配字符串,若是,則執(zhí)行步驟7,否則,直接執(zhí)行步驟9。
步驟7,匹配字符串。
將查找到的歷史字符串作為待匹配字符串。
將當(dāng)前待壓縮字符串與待匹配字符串兩者之間連續(xù)相同字符的個(gè)數(shù)記為匹配長(zhǎng)度。
讀出地址存儲(chǔ)器內(nèi)與有效信息的字典存儲(chǔ)地址對(duì)應(yīng)的位置信息,作為待匹配位置信息。
對(duì)待壓縮字符串的位置信息與待匹配位置信息做差,將其值作為匹配距離。
找出所有匹配長(zhǎng)度大于等于三的待壓縮字符串作為匹配成功字符串。
步驟8,修剪匹配字符串。
將匹配成功字符串對(duì)應(yīng)編號(hào)值與其自身的匹配長(zhǎng)度求和,將和值作為匹配延伸距離。
將同時(shí)處理自定義個(gè)數(shù)的計(jì)算單元中,匹配延伸距離最長(zhǎng)的匹配成功字符串,作為最長(zhǎng)匹配字符串。
將匹配成功字符串中的字符與最長(zhǎng)匹配字符串中字符相互重疊的個(gè)數(shù),作為重疊數(shù)。
對(duì)重疊數(shù)不為零的匹配成功字符串的匹配長(zhǎng)度與其重疊數(shù)作差,將差值作為修剪匹配長(zhǎng)度。
找出修剪匹配長(zhǎng)度大于等于三對(duì)應(yīng)的匹配成功字符串作為壓縮字符串。
將壓縮字符串對(duì)應(yīng)的修剪匹配長(zhǎng)度和匹配距離組成修剪匹配對(duì)。
用修剪匹配對(duì)替換匹配成功字符串,得到修剪后的匹配字符串。
將修剪后的匹配字符串與未處理字符串組成匹配壓縮文本。
步驟9,將得到的匹配壓縮文本輸入到哈夫曼編碼處理器,進(jìn)行碼流壓縮處理。
步驟10,獲得長(zhǎng)度哈夫曼碼流。
對(duì)未匹配替換的待壓縮字符串中的字符,用信息交換標(biāo)準(zhǔn)代碼ascii轉(zhuǎn)換為對(duì)應(yīng)的數(shù)值,將該數(shù)值作為靜態(tài)哈夫曼長(zhǎng)度查找表的字符索引值。
對(duì)修剪后的匹配字符串,將匹配長(zhǎng)度值作為靜態(tài)哈夫曼長(zhǎng)度查找表的長(zhǎng)度索引值。
將未匹配替換的待壓縮字符串和修剪后的匹配字符串統(tǒng)作為待處理字符串。
將靜態(tài)哈夫曼長(zhǎng)度查找表中字符索引值的碼字,作為待處理字符的長(zhǎng)度哈夫曼碼字。
將靜態(tài)哈夫曼長(zhǎng)度查找表中長(zhǎng)度索引值的碼字,作為待處理字符的長(zhǎng)度哈夫曼碼字。
步驟11,獲得距離哈夫曼碼流。
將未替換的待壓縮字符串中的字符的匹配距離設(shè)置為零。
將待處理字符串的匹配距離值作為靜態(tài)哈夫曼距離查找表的距離索引值。
將靜態(tài)哈夫曼距離查找表中距離索引值對(duì)應(yīng)的碼字作為距離哈夫曼碼字。
步驟12,輸出壓縮碼流。
將待處理字符串的長(zhǎng)度哈夫曼碼字和距離哈夫曼碼字組成匹配壓縮文本的壓縮碼流。
將壓縮碼流輸出到壓縮文件存儲(chǔ)器。
下面結(jié)合仿真實(shí)驗(yàn)對(duì)本發(fā)明的效果做進(jìn)一步的描述。
1.仿真條件:
本發(fā)明的仿真實(shí)驗(yàn)是采用xilinx公司的vivadohls2016.1作為綜合工具,首先創(chuàng)建工程項(xiàng)目,在xilinxvivadohls2016.1的工具欄中點(diǎn)擊file->openproject,按照保存路徑打開工程;其次在工具欄中點(diǎn)擊csynthesis,啟動(dòng)硬件編譯。
2.仿真內(nèi)容:
對(duì)本發(fā)明設(shè)計(jì)的基于gzip硬件實(shí)現(xiàn)文本壓縮方法對(duì)不同的自定義個(gè)數(shù)處理單元進(jìn)行仿真。
3.仿真結(jié)果分析:
表1為本發(fā)明仿真不同窗口大小文本壓縮實(shí)現(xiàn)性能比較一覽表。由下表可以看出,當(dāng)計(jì)算單元的個(gè)數(shù)等于8時(shí),吞吐率等于1.73gb/s,文本壓縮后的壓縮比為1.75倍,當(dāng)計(jì)算單元個(gè)數(shù)擴(kuò)大一倍為16時(shí),吞吐率增加到3.46gb/s,文本的壓縮比提高到2.14倍。由此可見,當(dāng)窗口大小較大時(shí),吞吐率和壓縮比均得到提高,其中,窗口大小的變化與吞吐率的提高成比例增長(zhǎng)關(guān)系。因此,本發(fā)明可以適用于不同吞吐率和壓縮比的需求背景。
表1不同窗口大小文本壓縮實(shí)現(xiàn)性能比較