uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marshall Schor (Jira)" <...@uima.apache.org>
Subject [jira] [Commented] (UIMA-6136) FSIndexComparatorImpl.equalsWithoutType() gets slow for many CASes with the same TS
Date Wed, 23 Oct 2019 16:20:00 GMT

    [ https://issues.apache.org/jira/browse/UIMA-6136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16958009#comment-16958009

Marshall Schor commented on UIMA-6136:

the traces show something strange.  From your description, I'm guessing that the index comparators
are almost all equal.  Yet, it seems the get operation, which does first a hash, and then
loops throught the bucket of equal hash hits, finds that bucket to be millions long.  

So, I think there's an actual bug somewhere in this implementation, which causes the cache.get
to return null or a WeakReference which has been "cleared", causing it to over and over add
the same index comparator to the cache.  

If you have any kind of a small test case :) ...

> FSIndexComparatorImpl.equalsWithoutType() gets slow for many CASes with the same TS
> -----------------------------------------------------------------------------------
>                 Key: UIMA-6136
>                 URL: https://issues.apache.org/jira/browse/UIMA-6136
>             Project: UIMA
>          Issue Type: Bug
>          Components: UIMA
>    Affects Versions: 3.1.0SDK
>            Reporter: Richard Eckart de Castilho
>            Priority: Minor
>         Attachments: 2019-10-21_22-23-37.png, 2019-10-21_22-44-25.png
> When creating several hundred CASes with the same type system, the `shareExisting` mechanism
which is designed to save on memory starts eating into CPU time quite a lot.
> This screenshot shows that in my particular case, the method is called ~11mio times and
takes the bulk of the processing time. The call hierarchy is a bit messed up though - actually
this happens when the CASes are initialized.
>  !2019-10-21_22-44-25.png|width=100%!
> The second screenshot shows the actual call hierarchy, but for some reason, the profile
doesn't properly dive into the `equals` method here and doesn't count the time spent in `equalsWithoutType`.
>  !2019-10-21_22-23-37.png|width=100%!! 
> So either the method shouldn't be called that often - or - it should be way faster.
> In the example, I have like 1800 CAS instances and their type system has upwards of 200

This message was sent by Atlassian Jira

View raw message