[SOLVED] How to set the type for QElapsedTimer?

  • I need to profile a few methods that are very fast, and by default QElapsedTimer for me works in msec, causing it always to return 0.

    @Nonsense conversion took 0
    Tedious operations took 0 @

    How can I change the type of the timer to lets say ticks, so I can actually do some profiling and optimizations?

  • Moderators

    You may also output in "nsec":https://qt-project.org/doc/qt-4.8/qelapsedtimer.html#nsecsElapsed
    I guess output in ticks is not supported because it would be platform dependent.
    Probably you should post a part of the code doing the output.

  • I am using qDebug() for the output, which I know is kind of wrong, especially since it only works in debug mode which is slower. Anyway, the nsecsElapsed() method totally did the trick for me, now I actually have numbers to work with:

    @Nonsense conversion took 57662
    Tedious operations took 816581 @

    EDIT: Turns out an if (!) statement takes more than generating three random values, 10 arithmetic operations and two getter and setter methods. I wanted to see if it will be faster to skip pixels with 0% visibility, turns out checking for 0% visibility is a little more expensive than processing everything.

    @ if (!(test.pixel(iX, iY) == 0xFF))
    test2.setPixel(iX, iY, qRgba(255 - (qrand() % 100), 0 + (qrand() % 100), 0 + (qrand() % 100), qAbs((int)test.pixel(iX, iY)-255)));@

    With the if statement skipping all non-visible pixels (about 80% of the image) takes about 820000 nsec, without the if statement, processing everything takes about 760000 nsec, which is a good ~8% on average.

  • Moderators

    Thanks for feedback. It is always good to know that something worked out ;-) You might want to change the title and add [Solved].

Log in to reply

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.