Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance issue with server side Shared Roster #560

Closed
irek-zaripov opened this issue Jan 24, 2016 · 3 comments
Closed

Performance issue with server side Shared Roster #560

irek-zaripov opened this issue Jan 24, 2016 · 3 comments

Comments

@irek-zaripov
Copy link

irek-zaripov commented Jan 24, 2016

With 1000 or more contacts in roster we over-watch that the method fetch() in the string https://github.com/jcbrand/converse.js/blob/master/converse.js#L2603
converse.rosterview.render().fetch().update();
is executed a long time(more than 15 seconds) and this is inadmissible for production systems.
Further investigation shows the dependency of this issue from the https://github.com/jashkenas/backbone project.
It seems to be related to the issue jashkenas/backbone#3242 Poor "add" performance on sorted collections.
@jcbrand what do you think, what options are exist for performance optimization on fetch() method for converse.rosterview?


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

@irek-zaripov
Copy link
Author

@jcbrand What do you think about using "Nested Roster Groups" http://www.xmpp.org/extensions/xep-0083.html?
It would be a very nice feature and may be will a workaround for large roster contacts.

@jcbrand
Copy link
Member

jcbrand commented Jan 25, 2016

what do you think, what options are exist for performance optimization on fetch() method for converse.rosterview?

Looking at the ticket, I think what is happening is that roster items are fetched one by one from sessionStorage and then sorting happens every time after such a fetch.

So a good optimization would be to fetch the roster items in a batch. If this is the case, then the change would most likely have to be made in Backbone.sessionStorage.

What do you think about using "Nested Roster Groups"

This was already requested in #265. This feature is not planned for the near future, but I'm available for contracting for any new features to converse.js.

@irek-zaripov irek-zaripov changed the title Performance issue Performance issue with server side Shared Roster Jan 27, 2016
@jcbrand
Copy link
Member

jcbrand commented Dec 19, 2017

Looking at the ticket, I think what is happening is that roster items are fetched one by one from sessionStorage and then sorting happens every time after such a fetch.

This isn't the case anymore. Closing.

@jcbrand jcbrand closed this as completed Dec 19, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants