移动端算法加速总结

做了几个月的移动端算法性能加速,略有心得,这里做个小结。

性能加速,即对于给定的输入,用更短的时间获得我们想要的输出。

总的来说有两个思路:

  1. 降低计算量
  2. 提高计算速度。

各种优化技术基本上都是围绕这两点展开的。

降低计算量

  • 优化算法或模型,使得用更少的计算量就可以达到同样的效果
  • 简化算法或模型,使得在牺牲部分准确度或效果的情况下速度能有大幅提升,看应用场景
  • 算法本身不变,优化实现。或将算法中可能存在的重复计算抽离出来,结果进行复用,或其它tricks
  • 空间换时间,如查表

提高计算速度

  • 增加计算并行度,如多线程/进程
  • SIMD向量化
  • 代码层面fine tune,如考虑缓存命中,浮点转定点,流水线优化
  • 提高硬件性能,或采用更高性能的计算单元

还有一些特殊情况,要根据特定的应用场景来做加速,通用的加速是较困难的,要做到在所有输入条件下都能有理想的提升不容易,因此可以退而求其次,只针对常用的几种情况进行有针对性的加速,如限定网络大小,限定图像缩放倍数,限定光流窗口大小等。这样的加速依然是有效的,脱离业务层面的加速是没有太大必要的,技术是为业务服务的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章