[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-panel-devel
Subject:    Re: Review Request: Analog clock painting performance
From:       "Alain Boyer" <alainboyer () gmail ! com>
Date:       2008-12-04 17:38:37
Message-ID: 20081204173837.19908.86290 () vidsolbach ! de
[Download RAW message or body]


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.vidsolbach.de/r/290/
-----------------------------------------------------------

(Updated 2008-12-04 09:38:37.771802)


Review request for Plasma.


Summary
-------

This patch attempts to speed up the analog clock painting performance. Essentially, \
it caches the QRects of the theme elements and streamlines some of the painting code.

The speedup is explained below, however I think we can do even better. For example, \
we could draw the hour and minute hands and shadows to a pixmap and then use that \
when only the second hand needs an update. I'm not sure if this is the way to go? \
Comments or suggestions?

Update: With the recent changes to Plasma::Svg, I have updated this patch. My \
apologies to the email noise, I'm still learning how to use RB.

This patch contains two changes. First, the drawHand() method has been modified to \
draw the shadow as well as the hand. Second, a background (face, hour hand, minute \
hand) and foreground (screw, glass) pixmap cache have been added. This greatly \
improves performance (see below) when the second hand is enabled. Is this a sane \
thing to do? Does using a cache lead to any re-painting issues I have not foreseen?


Diffs
-----

  /trunk/KDE/kdebase/workspace/plasma/applets/analog-clock/clock.h
  /trunk/KDE/kdebase/workspace/plasma/applets/analog-clock/clock.cpp

Diff: http://reviewboard.vidsolbach.de/r/290/diff


Testing
-------

Valgrind tells me that this patch introduces a 1.46 speedup to the drawHand() method. \
This contributes to a 1.40 speedup of paintInterface(). Not bad.

Another way of looking at it, paintInterface() used to spend 63% of its time actually \
painting (m_theme->paint()). Now, paintInterface() spends 98% of its time painting. \
Hence, painting is now the bottleneck.

Update: To test the performance, I ran the clock applet through Valgrind for 2 \
minutes. With the second hand enabled, a speedup of 2.69 is gained. With the second \
hand disabled, a speedup of 1.22 is gained.


Thanks,

Alain

_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic