造成这种时差的原因是什么?



我的代码有一些问题

在以下代码中:
GainDetailMatIMat型,矩阵为9792*2448
ContrastGainBound4096xContrastGainLayerIint
平台:Android 4.4,NDK gcc 4.9

A:

Mat plus = ContrastGainLayerI * min(ContrastGainBound4096x, max(0, GainDetailMatI - 4096.0));

B:

Mat t=max(0, GainDetailMatI - 4096.0);
Mat plus = ContrastGainLayerI * min(ContrastGainBound4096x, t);

A比B多用13毫秒。
我通过在Application.mk 上设置APP_OPTIM := debug来关闭gcc优化

有人知道原因吗
我认为max(0, GainDetailMatI - 4096.0)可能返回类型为MatExpr
t=max(0, GainDetailMatI - 4096.0);MatExpr转换为Mat
也许这就是原因
非常感谢!

在示例B中,首先将对象存储在t中,检索它以在代码的第二部分中使用。在示例A中,您可以跳过存储和检索,从而提高代码的效率。虽然这表明将所有代码转储到一行通常会提高效率,但请记住,可读性具有ALOT的价值。有关Java性能的更多信息可以在wiki上找到。https://en.wikipedia.org/wiki/Java_performance#Compressed_Oops

相关内容

  • 没有找到相关文章

最新更新