0

コードに問題があります

次のコード:
GainDetailMatIis Mattype with 9792*2448 matrix
ContrastGainBound4096x, ContrastGainLayerI is int
Platform: 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 で設定して gcc 最適化を閉じAPP_OPTIM := debugます

理由を知っている人はいますか?たぶん型で戻り、に変換すると 思い
ます多分 これが理由ですか? どうもありがとう!max(0, GainDetailMatI - 4096.0)MatExpr
t=max(0, GainDetailMatI - 4096.0);MatExprMat

4

1 に答える 1

1

例 B では、最初にオブジェクトを t に格納し、それを取得してコードの 2 番目の部分で使用します。例 A では、格納と取得をスキップして、コードをより効率的にしています。これは、すべてのコードを 1 行にダンプするとより効率的になることが多いことを示していますが、読みやすさには多くの価値があることに注意してください。Java パフォーマンスの詳細については、wiki を参照してください。https://en.wikipedia.org/wiki/Java_performance#Compressed_Oops

于 2016-04-29T09:35:37.020 に答える