[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-bugs-dist
Subject: [Bug 170156] New: Akregator unresponsive due to expensive
From: Eduardo Habkost <ehabkost () raisama ! net>
Date: 2008-08-31 22:56:35
Message-ID: bug-170156-17878 () http ! bugs ! kde ! org/
[Download RAW message or body]
http://bugs.kde.org/show_bug.cgi?id=170156
Summary: Akregator unresponsive due to expensive
Feed::totalCount() calculation
Product: akregator
Version: unspecified
Platform: Fedora RPMs
OS/Version: Linux
Status: NEW
Severity: normal
Priority: NOR
Component: general
AssignedTo: akregator-devel@lists.sourceforge.net
ReportedBy: ehabkost@raisama.net
Version: (using KDE 4.1.0)
OS: Linux
Installed from: Fedora RPMs
I've been testing KDE 4.1 and noticed Akregator is a little unresponsive
sometimes. Some investigation revealed it was using too much CPU simply
calculate the totalCount field on the list of feeds.
I have feed articles history of five years on my Akregator archive, that makes
the Feed::totalCount method too expensive because it walks on every article on
every feed.
The oprofile output of when I was experiencing irregular freezes (around a
quarter of a second freezes, every few seconds) revealed:
CPU: Core Solo / Duo, speed 1833 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Unhalted clock cycles) with a unit mask of
0x00 (Unhalted core cycles) count 100000
samples % linenr info app name symbol
name
4673 41.7680 article.cpp:247 akregatorpart.so
Akregator::Article::isDeleted() const
985 8.8041 feed.cpp:764 akregatorpart.so
Akregator::Feed::totalCount() const
584 5.2199 folder.cpp:133 akregatorpart.so
Akregator::Folder::feeds() const
230 2.0558 univ.cpp:72 akregator_mk4storage_plugin.so
c4_BaseArray::SetLength(int)
227 2.0290 mk4plugin.cpp:0 akregator_mk4storage_plugin.so
__i686.get_pc_thunk.bx
211 1.8859 remap.cpp:168 akregator_mk4storage_plugin.so
c4_HashViewer::CalcHash(c4_Cursor) const
168 1.5016 column.cpp:1448 akregator_mk4storage_plugin.so
c4_ColIter::Next()
159 1.4212 handler.cpp:51 akregator_mk4storage_plugin.so
c4_Handler::GetBytes(int, c4_Bytes&, bool)
136 1.2156 feed.cpp:725 akregatorpart.so
Akregator::Feed::unread() const
131 1.1709 (no location information) akregatorpart.so .plt
131 1.1709 treenode.cpp:192 akregatorpart.so
Akregator::TreeNode::id() const
[...]
I've made an experimental patch to make class Feed precalculate the
totalCount() results to avoid recalculating it too frequently. It seems to make
it more responsible, but I still need to get some numbers to back that up.
--
Configure bugmail: http://bugs.kde.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic