我还不太清楚,但是有很多烂摊子。
昨天我在四处寻找项目。今天中午,我弄清楚了:编写并行的gzip版本 。它可以让您进行低级位处理并编写高效的算法,但仍然具有许多不错的高级功能。它看起来也很像Python!
我用来了解gzip如何工作的文档
gzip的基本思想是
使用一些不太复杂的算法(霍夫曼编码,LZ77压缩)。这些事情听起来像是它们的复杂部分,但到目前为止,它们似乎还不错。从概念上讲。
做各种琐碎的事情才能真正提高效率。
文章中的一些选择(重点是我的)
“ hclen是少于四个的 3位长度代码的声明”(为什么四个?!??)
所有内容都是可变长度编码的,因此,您不仅要提取字节,还必须提取各种长度的位序列。因为效率。霍夫曼编码是使这种变长编码疯狂真正起作用的原因。
每个gzip文件均以“魔术字节”开头 1F8B
这是我编写的用于处理此问题的Julia代码的一个片段!此代码采用8位数组并将其转换为字节。默认情况下,Julia做一些聪明的事情,例如边界检查,但是您可以通过防止使用进行边界检查来使速度更快@inbounds
。
您可以看到,这种方法看起来很像Python,但速度很快!(我承诺)
function make_int(bv::BitVector) num = 0x00 for i=1:length(bv) num = (num << 1) + bv[i] end return numend
而已!也许明天我会真正理解gzip如何使用霍夫曼编码。到目前为止,我已经开始解码gzip标头。