I usually adopted ZK for small demonstration prototypes for research projects/proof-of-concepts, so when colleagues from production asks about ZK and have this question:

"What about performances, considering server side processing?"

I have no specific data to offer...

I found some old posts with some tests about this topic, and (please correct me if I am wrong) a few references in the documentation - does anybody have actionable information about production use of ZK-based applications? number of concurrent users? response time? etc. etc.?

4 Replies

We use ZK in our production sites. Our performance bottlenecks have been the data accessing tier rather than the UI tier. The big memory hogs in our system had been the second-level hibernate cache and coherence cluster cache. But to be fair, each of our installed sites has few hundred users at maximum.

The answer to your question really depends on how complicated your pages are. The more UI components you have per page per user, the bigger session in memory you need. Horizontal scaling by adding more servers can help. There are ways you can abuse the ZK UI, such as loading a huge database set into a listbox model per user. The trick in this case is to have a custom renderer to dynamically bring in visible rows as needed. So, one still needs to be smart in managing the UI view models.

Do you need good client side speed with a huge amount of dom element? If so, I suggest ZK. When I record the test script of a case that a grid (data table) contains 10 columns x 2000 rows, browser complains slow script while ROD in PrimeFaces but works well in ZK.

Do you need very fast response of ajax request? If so, I suggest ZK, the average response time is 5 times faster than PrimeFaces, ZK takes 30 when JSF takes 150.

For JSF side:

Do you want shrink the memory usage? If so, I suggest JSF, It uses 2/3 memory (compared with ZK) since it is more stateless (since JSF actually still a page based framework, not strongly ajax based)

Do you want make more user on fewer machine? If so, I suggest JSF, since memory usage is smaller, JSF can load 2 times (or more) larger amount of user on a machine.

It seems weird that JSF use 2/3 memory but can loading over 2 times more, I guess the cause is JSF is more stateless so most of memory can be GCed as needed

Briefly, ZK will be awesome on both response time and concurrent users if the memory is not a problem.

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!