- 我们写的安卓的应用,都是在一个虚拟机上跑,因为对性能要求不高,所以只要在逻辑层次优化就够了,在java层就行。
- 需要图像处理、语音处理、深度学习推理等对性能要求高的处理,这时需要在java虚拟机和系统内核直接打通一条通道,让这些对性能搞的处理在系统层跑,用C/C++,这条通道在安卓就是JNI(java native interface),到了C++,我们就可以更好的优化内存。
- 继续优化,可以在C++中嵌入汇编代码,这里为什么可以达到优化的目的呢,C++代码最终也是要靠GCC、CLANG等编译器编译成汇编代码的,但是这些汇编代码可能就不是最优的。举个例子:比如可能会出现CPU的Hazard,简单说就是可能会造成上一条汇编用到的寄存器还没读或写,下一条汇编语句也要读或写这个寄存器。
- 还能继续优化,SIMD,ARM的NEON就是SIMD指令集。就是一条指令同时操作多个数据。
- CPU性能不足了,异构计算来,利用GPU、DSP、FPGA等配套CPU进行处理。这时用到OpenCL、Vulkan、Metal、OpenGL等等。
网友评论