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

Richard Eckart de Castilho commented on UIMA-6136:
--------------------------------------------------

I wonder if the sharing of comparators is actually beneficial. If there is a 
small number of CASes, the memory-savings are small. If there is a large number 
of CASes, the performance impact is quite noticeable - in particular if the 
CASes are not re-used. So significant savings probably only happen if there is 
a large number of CASes with the same or similar type systems that are actually 
being re-used. Maybe this optimization could be made optional, either via a 
global flag or maybe even by checking if the CAS lives in a CAS Pool (if it 
does, it is likely to be re-used, otherwise probably not).

> 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 types.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to