Make the initialization time measurement work again.

This commit is contained in:
LoRd_MuldeR 2014-12-21 17:13:50 +01:00
parent c435e4e1c1
commit cc8df6e510
4 changed files with 8 additions and 71 deletions

View File

@ -35,7 +35,7 @@
#define VER_LAMEXP_MINOR_LO 1 #define VER_LAMEXP_MINOR_LO 1
#define VER_LAMEXP_TYPE Beta #define VER_LAMEXP_TYPE Beta
#define VER_LAMEXP_PATCH 10 #define VER_LAMEXP_PATCH 10
#define VER_LAMEXP_BUILD 1646 #define VER_LAMEXP_BUILD 1649
#define VER_LAMEXP_CONFG 1558 #define VER_LAMEXP_CONFG 1558
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////

View File

@ -42,10 +42,10 @@
#include <MUtils/IPCChannel.h> #include <MUtils/IPCChannel.h>
//Qt includes //Qt includes
#include <QMutex>
#include <QApplication> #include <QApplication>
#include <QMessageBox> #include <QMessageBox>
#include <QDate> #include <QDate>
#include <QMutex>
#include <QDir> #include <QDir>
//VLD //VLD
@ -170,7 +170,7 @@ static int lamexp_main(int &argc, char **argv)
{ {
int iResult = -1; int iResult = -1;
int iShutdown = SHUTDOWN_FLAG_NONE; int iShutdown = SHUTDOWN_FLAG_NONE;
//Print logo //Print logo
lamexp_print_logo(); lamexp_print_logo();
@ -262,5 +262,5 @@ static int lamexp_main(int &argc, char **argv)
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
return MUtils::Startup::startup(argc, argv, lamexp_main, lamexp_version_demo()); return MUtils::Startup::startup(argc, argv, lamexp_main, "LameXP", lamexp_version_demo());
} }

View File

@ -56,9 +56,6 @@ static const double g_allowedExtractDelay = 12.0;
static const size_t BUFF_SIZE = 512; static const size_t BUFF_SIZE = 512;
static const size_t EXPECTED_TOOL_COUNT = 28; static const size_t EXPECTED_TOOL_COUNT = 28;
/* benchmark */
#undef ENABLE_BENCHMARK
/* number of CPU cores -> number of threads */ /* number of CPU cores -> number of threads */
static unsigned int cores2threads(const unsigned int cores) static unsigned int cores2threads(const unsigned int cores)
{ {
@ -225,17 +222,11 @@ InitializationThread::InitializationThread(const MUtils::CPUFetaures::cpu_info_t
// Thread Main // Thread Main
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
#ifdef ENABLE_BENCHMARK
#define DO_INIT_FUNCT runBenchmark
#else //ENABLE_BENCHMARK
#define DO_INIT_FUNCT doInit
#endif //ENABLE_BENCHMARK
void InitializationThread::run(void) void InitializationThread::run(void)
{ {
try try
{ {
DO_INIT_FUNCT(); doInit();
} }
catch(const std::exception &error) catch(const std::exception &error)
{ {
@ -370,7 +361,7 @@ double InitializationThread::doInit(const size_t threadCount)
MUTILS_DELETE(pool); MUTILS_DELETE(pool);
//Performance measure //Performance measure
const qint64 delayExtract = timeExtractStart.elapsed(); const double delayExtract = double(timeExtractStart.elapsed()) / 1000.0;
timeExtractStart.invalidate(); timeExtractStart.invalidate();
//Make sure all files were extracted correctly //Make sure all files were extracted correctly
@ -395,7 +386,7 @@ double InitializationThread::doInit(const size_t threadCount)
} }
//Check delay //Check delay
if((double(delayExtract) / 1000.0) > g_allowedExtractDelay) if(delayExtract > g_allowedExtractDelay)
{ {
m_slowIndicator = true; m_slowIndicator = true;
qWarning("Extracting tools took %.3f seconds -> probably slow realtime virus scanner.", delayExtract); qWarning("Extracting tools took %.3f seconds -> probably slow realtime virus scanner.", delayExtract);
@ -403,7 +394,7 @@ double InitializationThread::doInit(const size_t threadCount)
} }
else else
{ {
qDebug("Extracting the tools took %.5f seconds (OK).\n", delayExtract); qDebug("Extracting the tools took %.3f seconds (OK).\n", delayExtract);
} }
//Register all translations //Register all translations
@ -420,59 +411,6 @@ double InitializationThread::doInit(const size_t threadCount)
return delayExtract; return delayExtract;
} }
void InitializationThread::runBenchmark(void)
{
#ifdef ENABLE_BENCHMARK
static const size_t nLoops = 5;
const size_t maxThreads = (5 * m_cpuFeatures.count);
QMap<size_t, double> results;
for(size_t c = 1; c <= maxThreads; c++)
{
QList<double> delayLst;
double delayAvg = 0.0;
for(size_t i = 0; i < nLoops; i++)
{
delayLst << doInit(c);
lamexp_clean_all_tools();
}
qSort(delayLst.begin(), delayLst.end());
delayLst.takeLast();
delayLst.takeFirst();
for(QList<double>::ConstIterator iter = delayLst.constBegin(); iter != delayLst.constEnd(); iter++)
{
delayAvg += (*iter);
}
results.insert(c, (delayAvg / double(delayLst.count())));
}
qWarning("\n----------------------------------------------");
qWarning("Benchmark Results:");
qWarning("----------------------------------------------");
double bestTime = DBL_MAX; size_t bestVal = 0;
QList<size_t> keys = results.keys();
for(QList<size_t>::ConstIterator iter = keys.begin(); iter != keys.end(); iter++)
{
const double time = results.value((*iter), DBL_MAX);
qWarning("%02u -> %7.4f", (*iter), time);
if(time < bestTime)
{
bestTime = time;
bestVal = (*iter);
}
}
qWarning("----------------------------------------------");
qWarning("BEST: %u of %u (factor: %7.4f)", bestVal, m_cpuFeatures.count, (double(bestVal) / double(m_cpuFeatures.count)));
qWarning("----------------------------------------------\n");
qFatal("Benchmark complete. Thanks and bye bye!");
#else //ENABLE_BENCHMARK
MUTILS_THROW("Sorry, the benchmark is *not* available in this build!");
#endif //ENABLE_BENCHMARK
}
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
// PUBLIC FUNCTIONS // PUBLIC FUNCTIONS
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////

View File

@ -50,7 +50,6 @@ public:
protected: protected:
void run(void); void run(void);
double doInit(const size_t threadCount = 0); double doInit(const size_t threadCount = 0);
void runBenchmark(void);
private: private:
void delay(void); void delay(void);