ループには何の問題もありません。Matlabについて聞いたことがあるかもしれませんが、C++では遅くありません。これが非常に時間に敏感なアプリケーションで使用される場合は、ループを最適化してi <= descriptors1.rows - 1
、各反復でチェックを削除できます。使用する必要もありません。直接にtemp
渡すことで時間を節約し、1行で実行できnormd1.rowRange
ます。normalize
編集:このメソッドnormalize(A.row(i), _OutputArray(B.ptr(i), B.cols))
、またはのテンプレートバージョンを使用できます_OutputArray
。各反復でループを記述した方法では descriptors1.rows - 1
、コンパイラがrows
定数ではなく、ループ内の関数がループを変更しないことを理解していない可能性が高いため、評価する必要があります。だから私はそれを次のようなものに変更します:
for (i = descriptors1.rows - 1; i >= 0; i--)
ただし、コンパイラによって生成されたコードをチェックして、最適化されていることを確認する必要があります。また、ループの展開も検討する必要があります。これが本当にコードのボトルネックである場合、Googleはループの最適化に関する多くの資料を見つけることができます。