这几天写了个LZW压缩算法

来源:互联网 发布:淘宝天猫2015双十一 编辑:程序博客网 时间:2024/06/05 17:54

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


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


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

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

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


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

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

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


原文件是11485374字节大小的bmp

 我的lzwtar cjvftar czvf耗时real    0m4.876s
user    0m4.824s
sys     0m0.040sreal    0m2.427s
user    0m2.344s
sys     0m0.080sreal    0m0.263s
user    0m0.244s
sys     0m0.012s压缩后大小1484150481280904640

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

继续努力!



原创粉丝点击