有一些问题,我的代码这个时间差异的原因是什么?
在如下代码:
GainDetailMatI
是Mat
型与9792 * 2448矩阵
ContrastGainBound4096x
,ContrastGainLayerI
是int
平台:Android 4.4系统,NDK GCC 4.9
一:
Mat plus = ContrastGainLayerI * min(ContrastGainBound4096x, max(0, GainDetailMatI - 4096.0));
B:
Mat t=max(0, GainDetailMatI - 4096.0);
Mat plus = ContrastGainLayerI * min(ContrastGainBound4096x, t);
一个使用13毫秒比B
更多我在Application.mk
关闭GCC优化由一套APP_OPTIM := debug
有没有人知道原因?
我想也许max(0, GainDetailMatI - 4096.0)
返回类型MatExpr
而t=max(0, GainDetailMatI - 4096.0);
转换MatExpr
到Mat
也许这是什么原因?
非常感谢!
但在我的情况下,案例B比答案更快。 它没有任何意义。 –
啊,道歉我误解你的问题的一部分。那么这意味着你可能是正确的,转换为Mat需要一段时间,当你把它放在内联。 – namlik
是的,这两种情况下,A和B都转换为垫子,这是不合理的,也许我需要检查GCC编译的对象代码? –