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

Oliver Heger commented on CONFIGURATION-596:
--------------------------------------------

In version 1.x, {{AbstractConfiguration}} creates one collection object for 
normal listeners and one for error listeners. In version 2.0 (currently in 
alpha state), there is only a single list managing all registered event 
listeners.

Do you have concrete numbers that these objects acutally cause a measurable 
overhead? After all, they are just empty {{CopyOnWriteArrayList}} objects. We 
could create them with a low initial capacity (as most applications are not 
expected to register many listeners), but this will only save a few bytes.

Using lazy initialization to overcome this has its own problems: There is a 
runtime overhead each time the lists are accessed, null checks would have to be 
added, and you would need a means of synchronization to ensure thread-safe 
access. In addition, some concrete configuration implementations register a 
special error listener which just logs occurring exceptions; in such cases, 
nothing is gained.

> Allow event listener Collections to be lazily created in event.EventSource
> --------------------------------------------------------------------------
>
>                 Key: CONFIGURATION-596
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-596
>             Project: Commons Configuration
>          Issue Type: Improvement
>          Components: Events & Notifications
>    Affects Versions: 1.9
>            Reporter: Vladimir Sitnikov
>
> It turns out every instance of {{AbstractConfiguration}} creates a couple of 
> {{CopyOnWriteAraryLists}} for {{event.EventSource}}.
> In our usage patterns in most of the cases the lists are not used.
> Can the lists be lazy-initialized? (that is created on the first addListener 
> request)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to