这几天写了个LZW压缩算法

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


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


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

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

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


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

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

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


原文件是11485374字节大小的bmp

 我的lzwtar cjvftar 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
压缩后大小1484150481280904640

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

继续努力!



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值