我正在实现LZW算法。我已经成功地针对字符串和文本文件实现了它,并且当前正在修改我的代码以处理二进制文件,例如图像或可执行文件(因为我无法将这些文件作为字符串读取)。
我已经更换了String
输入我的代码ArrayList<Byte>
类型。我的代码现在可以正确压缩和解压缩二进制文件,但速度至少慢 10 倍!这在速度是关键因素的压缩应用中是不可接受的。
我是否正确替换了ArrayList<Byte>
for String
。是否有具有类似功能的更快替代方案?请注意,LZW 算法需要调整数组大小,因此是标准的arrays[]
不适合。
Regards.
Using a List<Byte>
将每个字节装箱到一个单独的对象实例中。
总的来说,这是为了性能而可能做的最糟糕的事情之一。
相比之下,数组或字符串可以占用一块固定的内存块。
相反,你应该使用ByteArrayOutputStream
,或使用byte[]
直接并根据需要调整大小(您可以为此创建一个包装类)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)