现在的位置: 首页 > 综合 > 正文

这几天写了个LZW压缩算法

2013年02月03日 ⁄ 综合 ⁄ 共 546字 ⁄ 字号 评论关闭

之前看了一下gif的文件格式,看到里面的数据块都是用lzw算法压缩的。

所以就按照里面描述的算法自己实现了一个,用了3天时间,现在注意力不集中,而且代码实现的速度也很慢。

第一天,读懂算法,并编写了压缩函数,经纸笔检查,对小数据量和手工计算的编码是一致的。

第二天,编写部分解压函数,玩游戏总分心,没弄完。

第三天,编写解压函数,查找各种bug;在调通以后,发现当遇到大文件的情况,索引表满了时还需要重新初始化,又进行了修改,终于弄好了。

压缩,然后解压,看着生成内容和原文件无差别,心里那个高兴啊。

然而试了一下gif,让我彻底崩溃,压缩后的文件比之前还大。不过因为gif是压缩过的,而我的代码里只是机械的按照lzw算法描述做的,没有优化。

后来对比了一下和tar命令的差异。

原文件是11485374字节大小的bmp

  我的lzw tar cjvf tar czvf
耗时 real    0m4.876s
user    0m4.824s
sys     0m0.040s
real    0m2.427s
user    0m2.344s
sys     0m0.080s
real    0m0.263s
user    0m0.244s
sys     0m0.012s
压缩后大小 1484150 481280 904640

时间和空间都完败,真是“无颜见爹娘”啊。

继续努力!

抱歉!评论已关闭.