移動端算法加速總結

做了幾個月的移動端算法性能加速,略有心得,這裏做個小結。

性能加速,即對於給定的輸入,用更短的時間獲得我們想要的輸出。

總的來說有兩個思路:

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

各種優化技術基本上都是圍繞這兩點展開的。

降低計算量

  • 優化算法或模型,使得用更少的計算量就可以達到同樣的效果
  • 簡化算法或模型,使得在犧牲部分準確度或效果的情況下速度能有大幅提升,看應用場景
  • 算法本身不變,優化實現。或將算法中可能存在的重複計算抽離出來,結果進行復用,或其它tricks
  • 空間換時間,如查表

提高計算速度

  • 增加計算並行度,如多線程/進程
  • SIMD向量化
  • 代碼層面fine tune,如考慮緩存命中,浮點轉定點,流水線優化
  • 提高硬件性能,或採用更高性能的計算單元

還有一些特殊情況,要根據特定的應用場景來做加速,通用的加速是較困難的,要做到在所有輸入條件下都能有理想的提升不容易,因此可以退而求其次,只針對常用的幾種情況進行有針對性的加速,如限定網絡大小,限定圖像縮放倍數,限定光流窗口大小等。這樣的加速依然是有效的,脫離業務層面的加速是沒有太大必要的,技術是爲業務服務的。

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