[Nepomuk] Nepomuk::ResourceWatcher: Performance issues
Peter Penz
peter.penz19 at gmail.com
Mon Apr 30 20:44:42 UTC 2012
On 04/15/2012 07:18 PM, Sebastian Trüg wrote:
> I just saw that you only copied the header and link to
> "nepomukdatamanagement". In that case there is no need for the header
> since you depend on kde-runtime anyway. :)
Sorry for the late reply. I updated to the latest kde-runtime on master,
where the updated ResourceManager::addResource() checks whether the
resource-manager has been started already:
void Nepomuk::ResourceWatcher::addResource(const Nepomuk::Resource& res)
{
d->m_resources << res.resourceUri();
if(d->m_connectionInterface) {
d->m_connectionInterface->addResource(convertUri(res.resourceUri()));
}
}
Sadly it still does not seem to work: After adding a resource no e.g.
propertyChanged() signal will be emitted if the resource has been
changed. Using the (slow) workaround to call ResourceManager::stop(),
adding the resource and calling ResourceManager::start() works...
After having a very short look at the code: Could it be that an
additional call for d->m_watchManagerInterface in addResource() might be
required?
Anyhow: I'm not sure how well I proceed with my other tasks before the
4.9 release, but I'll try to have a look at the ResourceManager then and
can hopefully provide a patch. Please feel free to be faster if your
time allows it ;-)
Thanks,
Peter
PS: Also calling ResourceManager::start() without added resources still
results in a blocking UI for several seconds, but thats easy to bypass
on application level of course.
> On 04/14/2012 10:21 PM, Peter Penz wrote:
>> On 04/14/2012 10:02 PM, Sebastian Trüg wrote:
>>> On 04/06/2012 02:48 PM, Peter Penz wrote:
>> [...]
>>>> - Invoking ResourceWatcher::addResource() after invoking
>>>> ResourceWatcher::start() has no effect. As workaround before adding a
>>>> resource I needed to invoke ResourceWatcher::stop(), add the resource
>>>> and invoke ResourceWatcher::start() again. The problem with this
>>>> workaround is the performance: Calling stop() clears e.g. 15000 items
>>>> and calling start() after adding one resource adds 15001 items again. In
>>>> the case of the directory with 20000 this might take up a few seconds
>>>> for each (!) of the items in the upper-range.
>>>
>>> I implemented support for that a while ago. Where did you copy the RW
>>> from?
>>
>> Sounds good ;-) I've copied it from the KDE/4.8 branch due to the
>> kdelibs-freeze - I did not check the other branches, but probably you
>> pushed it to the frameworks branch?
>> _______________________________________________
>> Nepomuk mailing list
>> Nepomuk at kde.org
>> https://mail.kde.org/mailman/listinfo/nepomuk
>>
> _______________________________________________
> Nepomuk mailing list
> Nepomuk at kde.org
> https://mail.kde.org/mailman/listinfo/nepomuk
More information about the Nepomuk
mailing list