私はopencv 3.1を使用し、Visual Studio 2015アップデート3でWindows 10でintel TBBを有効にします。最初のトランスポーズ時間は100 msが必要で、もう一方のトランスポーズは0.02-0.05 ms必要です。最初のトランスポーズがなぜ1 * 1マトリックスのために多くの時間を必要とするのかを知っています。私はTBBが有効になっていませんが、問題は、パフォーマンスを測定している方法と思わopencv transpose first time long timeが必要です
double ts = time_measure("start", 0);
Mat_<uchar> A = (Mat_<uchar>(1, 1) << 1);
Mat at = A.t();
cout << "transpose Times needed : " << time_measure("end", ts) * 1000 << " ms " << endl;
for (int i = 0; i < 10; i++) {
ts = time_measure("start", 0);
Mat_<uchar> B = (Mat_<uchar>(1, 1) << 1);
Mat bt = B.t();
cout << "transpose Times needed : " << time_measure("end", ts) * 1000 << " ms " << endl;
}
double time_measure(const string mode, double ts) {
double t = 0.0;
if (mode == "start") {
t = (double)getTickCount();
}
else {
t = ((double)getTickCount() - ts)/getTickFrequency();
}
return t;
}
The output
transpose A Times needed : 112.062 mstranspose B Times needed : 0.0337221 ms
transpose B Times needed : 0.0205265 ms
transpose B Times needed : 0.0195491 ms
transpose B Times needed : 0.0283461 ms
transpose B Times needed : 0.0234589 ms
transpose B Times needed : 0.0298123 ms
transpose B Times needed : 0.0249251 ms
transpose B Times needed : 0.0283461 ms
transpose B Times needed : 0.0273687 ms
transpose B Times needed : 0.02688 ms
起こって奇妙な何かが、マトリックスの作成が40以上のミリ秒かかり方法来る、あり? – cxyzs7
時間はrand関数に最も費やされます。 –
私は自分のコンピュータで試してみましたが、作成と転置の両方が〜1.2msかかります – cxyzs7