我正在使用本機代碼在Android中進行一些圖像壓縮。由於各種原因,我無法使用預建庫。加速浮點運算(Android ARMv6)
我使用android-ndk-profiler描述了我的代碼,發現瓶頸是 - 令人驚訝的是 - 浮點運算!這裏的配置文件輸出:
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
40.37 0.44 0.44 __addsf3
11.93 0.57 0.13 7200 0.02 0.03 EncodeBlock
6.42 0.64 0.07 535001 0.00 0.00 BitsOut
6.42 0.71 0.07 __aeabi_fdiv
6.42 0.78 0.07 __gnu_mcount_nc
5.50 0.84 0.06 __aeabi_fmul
5.50 0.90 0.06 __floatdisf
...
我GOOGLE了__addsf3,顯然它是一個軟件浮點運算。呸。我對ARMv6架構內核做了更多的研究,除非我錯過了一些東西,它沒有硬件浮點支持。那麼,我可以在這裏做些什麼來加快速度?固定點?我知道這通常是用整數完成的,但我不確定如何將我的代碼轉換爲這樣做。有沒有我可以設置的編譯器標誌,因此它會這樣做?歡迎其他建議。