loggers/loggerqt/src/glxperformancelog.cpp
changeset 23 74c9f037fd5d
child 24 99ad1390cd33
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loggers/loggerqt/src/glxperformancelog.cpp	Fri Mar 19 09:28:59 2010 +0200
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   ?Description
+*
+*/
+
+#include <glxperformancelog.h>
+
+#define GLX_LOG_PRINT_ITERATION 20
+QFile GlxPerformanceLog::mLogFile;
+qint16 GlxPerformanceLog::mObjectCounter = 0;
+
+GlxPerformanceLog::GlxPerformanceLog(char *str) : mSpendTime(0), mTotalTime(0), mIteration(0), mInfoMsg (str)
+{ 
+    mTime.start();
+    ++mObjectCounter;
+    if( GlxPerformanceLog::mLogFile.isOpen() == FALSE) {
+	    GlxPerformanceLog::mLogFile.setFileName("glxperlog.txt");
+	    QDir::setCurrent("c:\\data\\");
+	    GlxPerformanceLog::mLogFile.open(QIODevice::Append);
+	    GlxPerformanceLog::mLogFile.setTextModeEnabled(TRUE);
+    }
+}
+
+void GlxPerformanceLog::start()
+{
+    mTime.restart();
+}
+
+void GlxPerformanceLog::stop()
+{
+    mSpendTime = mTime.elapsed();
+    mTotalTime += mSpendTime;
+    ++mIteration;
+    if ( (mIteration % GLX_LOG_PRINT_ITERATION )== 1) {
+        appendPerformanceLog();
+    }
+}
+
+void GlxPerformanceLog::end()
+{
+    appendPerformanceLog();
+    mSpendTime = mTotalTime = mIteration = 0;
+}
+
+void GlxPerformanceLog::done(char *msg )
+{
+    mSpendTime = mTime.elapsed();
+    mTotalTime += mSpendTime;
+    ++mIteration;
+    appendPerformanceLog(msg);
+    mSpendTime = mTotalTime = mIteration = 0;
+}
+
+qreal GlxPerformanceLog::getAverageTime()
+{
+    if( mIteration == 0) {
+        return -1;
+    }
+    return ( (mTotalTime + 0.0) / mIteration );
+}
+
+quint32 GlxPerformanceLog::getTime()
+{
+    return mSpendTime;
+}
+
+void GlxPerformanceLog::appendPerformanceLog(char *msg)
+{
+    char logText[255] = {0};
+    sprintf(logText, "%s : %s last time %u : average time : %f iteration %u \n", mInfoMsg, msg, mSpendTime, getAverageTime(), mIteration);
+    GlxPerformanceLog::mLogFile.write(logText);
+}
+
+void GlxPerformanceLog::appendTimeStamp(char *msg)
+{
+    char logText[255] = {0};
+    QTime t = QTime::currentTime();
+    sprintf(logText, "%s : Time Stamp %d:%d:%d:%d \n", msg, t.hour(), t.minute(), t.second(), t.msec());
+    GlxPerformanceLog::mLogFile.write(logText);
+}
+
+GlxPerformanceLog::~GlxPerformanceLog()
+{
+    --mObjectCounter;
+    if ( mObjectCounter == 0) {
+        GlxPerformanceLog::mLogFile.close();
+    }
+}
+
+
+