我在LZ77压缩程序中工作,当我试图压缩一个116Kb的文件时,它需要太长的时间来处理。我的代码有什么问题吗?我如何才能改进算法的处理时间?
import fileinput
class Assign:
def pattern(self, data):
self.skip = []
self.m = len(data)
for k in range(256): self.skip.append(self.m)
for k in range(self.m - 1): self.skip[ord(data[k])]
或者更准确地说,当两个相同的字符串连接在一起时,为什么zlib不能使整个第二个字符串收缩呢?看起来,当匹配的字符串在同一字符串的前一个实例之后立即开始时,zlib将第一个字符作为字符串文本发出,然后向后发出对前一个字符串减去第一个字符的引用。
例如,如果我使用zlib来缩小字符串latelate,输出是5个字符串文本,后面是一个反向引用.
l a t e l <len=3, dist=4>
或者赫夫曼编码..。
0000000 cb 49 2c 49 cd 01 62 00
0000010
其中,我通过使用"raw“放气流(即windowBits = -15)和固定的huf