jboss42 / exodus

Automatically exported from code.google.com/p/exodus
3 stars 5 forks source link

Very slow roster loading time with BIG rosters #67

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Very slow roster loading time with BIG rosters (5000+ buddies). It may take
10 minutes on a reasonably fast machine (of flickering window) to load such
a roster (tests show that this job can be done on the same machine about 15
seconds) so the problem doesn't lye in protocol or transport but in code on
the client side.

Such rosters are used in automation or remote control applications
(industrial for example) where you have to "chat" with thousands of
controllers that do various things (measurement, automation etc).

What steps will reproduce the problem?
1. connect with a server having 5000 buddies in roster

What is the expected output? What do you see instead?
I expect this to take long but not 10-15 minutes on 2GHz+ machine with
100%CPU. Tests with jabber-net.dll and some test code show that the job can
be done in about 15 seconds with the same configuration.

What version of the product are you using? On what operating system?
0.10.

To what server (if public like jabber.org) are you connecting?
private (running ejabberd 1 or 2)

What plugins, if any, are enabled?
none

Please provide any additional information below.
A lot of time is wasted with window flicker (repaint) but there are some
other places (before flickering begins) that eat a lot of CPU, much more
than it proved necessary to get the roster from server and populate a
listview with it .net for example. These tests shown that getting the full
roster data from server can be done in less than 5 seconds and populating
the listview with buddies details took another 10 seconds of 100%cpu.

I know this is not a typical scenario of usage but there are places and
situation where roster can be BIG.

Original issue reported on code.google.com by mrx33...@gmail.com on 21 Mar 2009 at 2:17