On Tue, Nov 9, 2010 at 7:05 AM, Rick W. Chen <stuffcor...@archlinux.us> wrote: > On 09 Nov 2010 11:47 +0100, Kevin Funk: >> Tuesday 09 November 2010, "Rick W.Chen" <stuffcor...@archlinux.us>: >> > commit 7bca88681ee8248741d0b6daa966326512621bbd >> > branch master >> > Author: Rick W. Chen <stuffcor...@archlinux.us> >> > Date: Tue Nov 9 17:06:12 2010 +1300 >> > >> > debug: use elapsed timer >> > >> > as kdelibs SVN commit 1194322 >> > >> >> (snip) >> >> > @@ -130,6 +129,8 @@ using Debug::fatal; >> > /// Performance logging >> > #define PERF_LOG( msg ) { Debug::perfLog( msg, __PRETTY_FUNCTION__ ); } >> > >> > +class BlockPrivate; >> > + >> > namespace Debug >> > { >> > /** >> > @@ -157,13 +158,11 @@ namespace Debug >> > class Block >> > { >> > public: >> > - AMAROK_CORE_EXPORT Block(const char* name); >> > + AMAROK_CORE_EXPORT Block( const char *name ); >> > AMAROK_CORE_EXPORT ~Block(); >> > >> > private: >> > - QTime m_startTime; >> > - const char *m_label; >> > - int m_color; >> > + BlockPrivate *const d; >> > }; >> > >> > /** >> > diff --git a/src/core/support/Debug_p.h b/src/core/support/Debug_p.h >> > index 20ea59a..43d0676 100644 >> > --- a/src/core/support/Debug_p.h >> > +++ b/src/core/support/Debug_p.h >> > @@ -20,7 +20,12 @@ >> > #include "Debug.h" >> > >> > #include <QString> >> > -#include <QTime> >> > + >> > +#if QT_VERSION >= 0x040700 >> > +# include <QElapsedTimer> >> > +#else >> > +# include <QTime> >> > +#endif >> > >> > class IndentPrivate >> > >> > : public QObject >> > >> > @@ -37,11 +42,15 @@ public: >> > class BlockPrivate >> > { >> > public: >> > - BlockPrivate(const char* label); >> > - >> > - QTime m_startTime; >> > - const char *m_label; >> > - int m_color; >> > + BlockPrivate( const char *text ); >> > + >> > +#if QT_VERSION >= 0x040700 >> > + QElapsedTimer startTime; >> > +#else >> > + QTime startTime; >> > +#endif >> > + const char *label; >> > + int color; >> > }; >> > >> > #endif // DEBUGPRIVATE_H >> >> Hey Rick, >> >> there was a reason for not using the pimpl idiom in the Block class. I didn't >> add a comment about this, though. >> >> I have no performance benchmarks, but it could get notably slow if you're >> operating on the heap for each ctor/dtor call of Block. We're already using >> this in most parts of Amarok, this code is used extensively during Amarok >> startup. Also this is still the case within release builds. >> >> Please do some benchmarks with regards to this, just to be sure. Startup time >> is important. > > I noticed in Debug_p.h BlockPrivate was defined but not used, so I > thought it was intended to be used later. I've not noticed slower > startup times but yes not using the private ptr stuff could have an > improvement. This only matters if debug is turned on though. > > What's a good way to benchmark this?
Theres a performance graphing script in one of the top level directories, with a readme as well. It ties into the PERF_LOG macro in debug.h Dan, > > -- > Rick > _______________________________________________ > Amarok-devel mailing list > Amarok-devel@kde.org > https://mail.kde.org/mailman/listinfo/amarok-devel > _______________________________________________ Amarok-devel mailing list Amarok-devel@kde.org https://mail.kde.org/mailman/listinfo/amarok-devel