기본 코드를 사용하여 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
...
내가 __addsf3을 봤 분명히 그것은 소프트웨어 부동 소수점 연산입니다. 왝. ARMv6 아키텍처 코어에 대해 더 많은 연구를했는데 뭔가 놓치지 않으면 하드웨어 부동 소수점 지원 기능이 없습니다. 이렇게 속도를 높이려면 어떻게해야합니까? 고정 소수점? 나는 그것이 일반적으로 정수로 끝난다는 것을 알고 있지만, 그렇게하기 위해 코드를 변환하는 방법을 잘 모르겠습니다. 컴파일러 플래그를 설정할 수 있도록 컴파일러 플래그가 있습니까? 다른 제안을 환영합니다.