文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>程序优化小记

程序优化小记

时间:2011-01-19  来源:chinese_submarine

 

  压缩率 实现复杂度 内存占用量
霍夫曼算法
RLE算法
查表算法 大(一般几十K)

 

由于查表算法的内存占用量一般需要几十K,所以所以首先排除,而且比较霍夫曼算法和RLE算法,RLE算法在压缩率,实现复杂度,内存占用量三个方面都占有优势,所以最终选择RLE作为压缩和解码的方法。

花了几天时间实现了改算法,今天对其进行了性能测试,发现解压目标数据需要200多ms,遂决定对其进行优化。

step1,还原行解压函数,减少一百多次的函数调用,但是实验的结果是反而增加了100多ms,猜测可能是有远指针调用,遂放弃。

step2,将行解压函数中,对堆内存的访问换成对栈上数据的访问,实验下来时间减小到了70-80ms,性能提升了一倍多。

step3,由于采用的RLE算法是经过改进过的,n + 1行的数据是和n行数据异或过,所以增加相同数据的几率,比如有三行数据时1010 1010,理论上是不能压缩的,当时经过异或,后面两行数据都变成了0000 0000,便可以采用RLE算法进行压缩。所以根据这一特性,在step3做的优化是,比较解压出的值,如果是0,则不需要和上一行的数据进行异或(因为任何数和零异或都不变)。改进后可以将时间减小到30-40ms,又提升了一倍多。

step4,在step3的基础,在行解压算法中,如果检测到行的剩余部分都是0,则直接跳过该行剩下的部分。改进后时间减小到了十几个ms。

所以进过step2-4,性能提升了10倍多。

相关阅读 更多 +
排行榜 更多 +
哥布林弹球b服手游下载

哥布林弹球b服手游下载

休闲益智 下载
小马样式盒游戏下载

小马样式盒游戏下载

休闲益智 下载
异变小镇中文版下载安装

异变小镇中文版下载安装

冒险解谜 下载