我正在将许多低级操作从本机 matlab 代码转换为 C/mex 代码,速度非常快。(这些低级操作可以在 .m 代码中矢量化完成,但我认为我会遇到大数据的内存命中 b/c。无论如何。)我注意到用不同的 CFLAGS 编译 mex 代码可能会导致轻微的改进。例如CFLAGS = -O3 -ffast-math
,确实提供了一些加速,但代价是轻微的数值不准确。
我的问题:什么是“最好的” CFLAGS 使用,不会产生太多其他副作用?看来,至少
CFLAGS = -O3 -fno-math-errno -fno-unsafe-math-optimizations -fno-trapping-math -fno-signaling-nans
一切都还好。我不确定-funroll-loops
。
另外,您将如何半自动地优化使用的 CFLAGS 集而不发疯?