[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