C/C++编程语言一个优势是程序的效率,这对于计算量大的人工智能算法尤为重要。如果你能够将程序效率提升10倍,那意味着程序可以用1/10的时间完成任务,也意味着算法可以部署到非常低价的嵌入式系统上。
要想程序跑得快,可以依次做如下事情。
1. 利用编译器的优化选项
编译的时候gcc/g++等编译器使用“-O3”选项,Visual Studio请在项目属性页面里:项目->属性->配置属性->C/C++->优化->优化:使速度最大化(/O2)。
另外,切勿在Debug模式下评估速度(gcc/g+的“-g” “-ggdb”选项,VS的Debug模式),因为Debug生成的程序有大量的Debug指令。
2. 利用SIMD指令
SIMD的全称是Single Instruction Multiple Data,是由CPU支持的加速指令。Intel CPU的有MMX、SSE、AVX2、AVX512等,ARM CPU是NEON指令,RISC-V CPU是RVV。各种平台的差异很大,我曾写过文章介绍过OpenCV提供的统一指令:使用OpenCV中的universal intrinsics为算法提速 (1);使用OpenCV中的universal intrinsics为算法提速 (2);使用OpenCV中的universal intrinsics为算法提速 (3)
3. OpenM