Benchmarking: added inf/sup decimators test

This commit is contained in:
f4exb 2018-05-09 21:50:41 +02:00
parent 1c354dba4d
commit c3242d618f
6 changed files with 101 additions and 9 deletions

View File

@ -77,7 +77,7 @@ bool NFMDemodGUI::handleMessage(const Message& message)
{
if (NFMDemod::MsgReportCTCSSFreq::match(message))
{
qDebug("NFMDemodGUI::handleMessage: NFMDemod::MsgReportCTCSSFreq");
//qDebug("NFMDemodGUI::handleMessage: NFMDemod::MsgReportCTCSSFreq");
NFMDemod::MsgReportCTCSSFreq& report = (NFMDemod::MsgReportCTCSSFreq&) message;
setCtcssFreq(report.getFrequency());
//qDebug("NFMDemodGUI::handleMessage: MsgReportCTCSSFreq: %f", report.getFrequency());

View File

@ -9,7 +9,7 @@
const PluginDescriptor NFMPlugin::m_pluginDescriptor = {
QString("NFM Demodulator"),
QString("3.14.5"),
QString("3.14.6"),
QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"),
true,

View File

@ -49,6 +49,10 @@ void MainBench::run()
if (m_parser.getTestType() == ParserBench::TestDecimatorsII) {
testDecimateII();
} else if (m_parser.getTestType() == ParserBench::TestDecimatorsInfII) {
testDecimateII(ParserBench::TestDecimatorsInfII);
} else if (m_parser.getTestType() == ParserBench::TestDecimatorsSupII) {
testDecimateII(ParserBench::TestDecimatorsSupII);
} else if (m_parser.getTestType() == ParserBench::TestDecimatorsIF) {
testDecimateIF();
} else if (m_parser.getTestType() == ParserBench::TestDecimatorsFI) {
@ -62,7 +66,7 @@ void MainBench::run()
emit finished();
}
void MainBench::testDecimateII()
void MainBench::testDecimateII(ParserBench::TestType testType)
{
QElapsedTimer timer;
qint64 nsecs = 0;
@ -78,9 +82,25 @@ void MainBench::testDecimateII()
for (uint32_t i = 0; i < m_parser.getRepetition(); i++)
{
timer.start();
decimateII(buf, m_parser.getNbSamples()*2);
nsecs += timer.nsecsElapsed();
switch (testType)
{
case ParserBench::TestDecimatorsInfII:
timer.start();
decimateInfII(buf, m_parser.getNbSamples()*2);
nsecs += timer.nsecsElapsed();
break;
case ParserBench::TestDecimatorsSupII:
timer.start();
decimateSupII(buf, m_parser.getNbSamples()*2);
nsecs += timer.nsecsElapsed();
break;
case ParserBench::TestDecimatorsII:
default:
timer.start();
decimateII(buf, m_parser.getNbSamples()*2);
nsecs += timer.nsecsElapsed();
break;
}
}
printResults("MainBench::testDecimateII", nsecs);
@ -202,6 +222,70 @@ void MainBench::decimateII(const qint16* buf, int len)
}
}
void MainBench::decimateInfII(const qint16* buf, int len)
{
SampleVector::iterator it = m_convertBuffer.begin();
switch (m_parser.getLog2Factor())
{
case 0:
m_decimatorsII.decimate1(&it, buf, len);
break;
case 1:
m_decimatorsII.decimate2_inf(&it, buf, len);
break;
case 2:
m_decimatorsII.decimate4_inf(&it, buf, len);
break;
case 3:
m_decimatorsII.decimate8_inf(&it, buf, len);
break;
case 4:
m_decimatorsII.decimate16_inf(&it, buf, len);
break;
case 5:
m_decimatorsII.decimate32_inf(&it, buf, len);
break;
case 6:
m_decimatorsII.decimate64_inf(&it, buf, len);
break;
default:
break;
}
}
void MainBench::decimateSupII(const qint16* buf, int len)
{
SampleVector::iterator it = m_convertBuffer.begin();
switch (m_parser.getLog2Factor())
{
case 0:
m_decimatorsII.decimate1(&it, buf, len);
break;
case 1:
m_decimatorsII.decimate2_sup(&it, buf, len);
break;
case 2:
m_decimatorsII.decimate4_sup(&it, buf, len);
break;
case 3:
m_decimatorsII.decimate8_sup(&it, buf, len);
break;
case 4:
m_decimatorsII.decimate16_sup(&it, buf, len);
break;
case 5:
m_decimatorsII.decimate32_sup(&it, buf, len);
break;
case 6:
m_decimatorsII.decimate64_sup(&it, buf, len);
break;
default:
break;
}
}
void MainBench::decimateIF(const qint16* buf, int len)
{
FSampleVector::iterator it = m_convertBufferF.begin();

View File

@ -47,11 +47,13 @@ signals:
void finished();
private:
void testDecimateII();
void testDecimateII(ParserBench::TestType testType = ParserBench::TestDecimatorsII);
void testDecimateIF();
void testDecimateFI();
void testDecimateFF();
void decimateII(const qint16 *buf, int len);
void decimateInfII(const qint16 *buf, int len);
void decimateSupII(const qint16 *buf, int len);
void decimateIF(const qint16 *buf, int len);
void decimateFI(const float *buf, int len);
void decimateFF(const float *buf, int len);

View File

@ -118,8 +118,12 @@ ParserBench::TestType ParserBench::getTestType() const
return TestDecimatorsFI;
} else if (m_testStr == "decimateff") {
return TestDecimatorsFF;
}else if (m_testStr == "decimateif") {
} else if (m_testStr == "decimateif") {
return TestDecimatorsIF;
} else if (m_testStr == "decimateinfii") {
return TestDecimatorsInfII;
} else if (m_testStr == "decimatesupii") {
return TestDecimatorsSupII;
} else {
return TestDecimatorsII;
}

View File

@ -29,7 +29,9 @@ public:
TestDecimatorsII,
TestDecimatorsIF,
TestDecimatorsFI,
TestDecimatorsFF
TestDecimatorsFF,
TestDecimatorsInfII,
TestDecimatorsSupII
} TestType;
ParserBench();