On Fri, Sep 18, 2015 at 9:48 PM, Martijn Dashorst <
[email protected]> wrote:

> I'm working on a test case that can check for this, but it requires
> considerable memory due to the massive number of components added to
> make the test cases significant:
>
> Adding      40000 components took   202ms
> Adding      10000 components took    10ms
> Adding      20000 components took    19ms
> Adding      40000 components took    34ms
> Adding      80000 components took    60ms
> Adding     160000 components took   119ms
> Adding     320000 components took   254ms
> Adding     640000 components took   602ms
>
> These numbers were generated running JUnit with -Xmx4g and -Xms4g.
> Running with default settings (iirc -Xmx256m) will make the results
> unreliable due to the garbage collector kicking in (1g is also not
> safe).
>
> Now we don't have too much control over our systems where the tests
> run, so the value might not be there. The algorithm's O(1) complexity
> after our changes is 'proven', so we can leave it at that.
>
> What do you think?
>

Since you have the code already then just add it to the test suite as
@Ignore-d, so someone else may make use of it next time we need to deal
with these matters.
I think this test will behave differently on different machines (some are
slower than you beefy Mac) so it won't serve us well as a proper test
anyway.


>
> Martijn
>
>
> On Fri, Sep 18, 2015 at 8:21 PM, Martijn Dashorst
> <[email protected]> wrote:
> > You can find the commit(s) here:
> >
> > https://github.com/apache/wicket/compare/WICKET-5981
> >
> > Martijn
> >
> >
> > On Fri, Sep 18, 2015 at 3:04 PM, Emond Papegaaij
> > <[email protected]> wrote:
> >> Hi all,
> >>
> >> Martijn and I spent some more time measuring Wicket's performance,
> mostly in
> >> component tree construction. It turned out that code written bij Johan,
> back
> >> in the Wicket 1.2 time, causes O(n^2) complexity on the number children
> of a
> >> MarkupContainer. We've rewritten the entire children storage, using a
> >> LinkedHashMap when the number of children exceeds 24 (this number was
> found
> >> after some test trials). For smaller sizes, a simple ArrayList is used,
> which
> >> is more memory efficient.
> >>
> >> The new code now has almost O(1) on adding/removing/get-by-id but O(n)
> on get
> >> by index. MarkupContainer.swap also is O(n).
> >>
> >> Can someone take a look at the new code? MarkupContainer is a rather
> important
> >> class and if we want to put this in 7.1, it'd better be bug-free :)
> >>
> >> Best regards,
> >> Martijn and Emond
> >
> >
> >
> > --
> > Become a Wicket expert, learn from the best: http://wicketinaction.com
>
>
>
> --
> Become a Wicket expert, learn from the best: http://wicketinaction.com
>

Reply via email to