生成gif 性能优化
来源:互联网 发布:linux 挂载移动硬盘 编辑:程序博客网 时间:2024/06/08 02:43
因为工作原因.最近要对gif生成动画编码做优化.之前是使用的开源gif编码平均每次生成一个20帧的gif图片,平均时间大概是160ms,但因为是打规模生成,所以觉得还有提升空间,所以不断在网上找资料.于是找到octree算法.于是就拿了下来.
gif算法,其实分两大部分.
1,因为gif使用的是256色索引,所以要把16m色的图取出256个色,作为gif索引表.而octree(八叉树)取色算法是一种比较好的算法
2.把生成的256色索引值变成编码成为lzw编码.
在实际测试中,lzw算法是比较快的.所以,优化性能不大
所以就对八叉树做优化了.
一开始,参考了http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c3677/这个算法.高出了一个基本编码器了.
一测,发现比原来的算法大概快了一倍.大概80ms左右,
因看到算法还有一定优化空间,于是继续进一步优化,首先,第一步就是把所有new的内存分配变成自己来分配.这里用了两种方法.一开始用了内存池.发现提高了10%,之后再一个栈分配.一次把所有内存都生成,而且中间没有del.这样,虽然占了一些内存,但是比原来提高了15%,可见在100000级的内存分配中.是比较显著的
第二步,就是做一件简单的优化,例如把一些地方改成inline,一些递归的地方改成非递归.发现没有提升多少.,郁闷中
第三布,总体编码,对所有帧统一编码,使用一个全局的colortable,这个方法的确快了20%左右,
第四步,对相邻帧同相同颜色的优化,就是如果两帧是相同颜色,那就就一次过来统计.不过发现也提升不了很多.估计是内存块之间的切换有问题
第五步,搞了一个多星期,还是没有提升多少,之后,决定自己参考重写一个octree算法,而且加入模板递归.测试了最后比较原来快了40左右,现在帧大概是50ms左右,我觉得暂时已经到了极限了.除非用汇编写了
- 生成gif 性能优化
- GraphicsMagick生成缩略图性能优化
- javaWEB性能优化_生成静态页面
- 优化加载gif动画
- JAVA生成GIF图片
- 生成GIF图片
- 在线生成loadoing.gif
- vc gif 动画生成
- matlab gif文件生成
- C++生成GIF小结
- gif动画生成工具
- 截取屏幕生成GIF
- ffmpeg视频生成gif
- android app动图优化:源码giflib加载gif动图,性能秒杀glide
- Android 用ffmpeg生成Gif 各种排列组合的性能测试结果
- [gif] 基于gif.h的gif文件生成
- 加载GIF图片优化方案
- 用JAVA生成GIF动画
- js Ajax 类
- Lucene:基于Java的全文检索引擎简介
- Js url 编码
- 从google doc转移-直接交换排序
- linux常用命令
- 生成gif 性能优化
- asp多文件上传(转)
- 恢复注册表中的sybase服务信息
- arcgis 新得
- java程序员成长全计划
- 从google doc转移-直接插入排序
- jsp页面多文件上传(转)
- arcgis9.3 desktop的安装
- CS模式短信监控系统的设计与实现