PrimeFaces vs RichFaces vs IceFaces


6th round: Performance

In order to test performance, we decided to use the most common JSF component, a dataTable made up of 5 columns and 100 rows. Each row contained a random unique String which emulates (in terms of time) data fetching from DB. The test was run on a lap top which runs an Intel core 5i, two processors, 8GB RAM and Windows 7. So here's an extract from Apache ab stress tool, when issuing 5000 request (10 concurrent):

richfaces vs icefaces Richfaces

Document Length:        47442 bytes

Requests per second:    28.59 [#/sec] (mean)
Time per request:       174.869 [ms] (mean)
Time per request:       34.974 [ms] (mean, across all concurrent requests)
Transfer rate:          1329.59 [Kbytes/sec] received

Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0    2   7.3      0      78
Processing:    47  172  98.1    141     766
Waiting:        0   77  61.0     47     578
Total:         47  174  98.4    156     766

Percentage of the requests served within a certain time (ms)

  50%    156
  66%    188
  75%    219
  80%    250
  90%    313
  95%    375
  98%    438
  99%    469
 100%    766 (longest request)


 
icefaces vs primefaces Icefaces

Document Length:        76072 bytes
Requests per second:    11.12 [#/sec] (mean)
Time per request:       899.281 [ms] (mean)
Time per request:       89.928 [ms] (mean, across all concurrent requests)
Transfer rate:          829.41 [Kbytes/sec] received

Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0    5  15.1      0     266
Processing:    47  889 1183.8    484   12953
Waiting:       31  729 1103.1    375   12938
Total:         47  894 1183.3    484   12969

Percentage of the requests served within a certain time (ms)

  50%    484
  66%    672
  75%    828
  80%   1063
  90%   2422
  95%   2734
  98%   4750
  99%   5359
 100%  12969 (longest request)


primefaces vs richfaces Primefaces
Surprisingly enough the first hit with PF ended with an "IllegalStateException: Cannot create a session after the response has been committed failure". This  occurs when the response buffer has overflowed (due to large content) and the response is been committed before the session is been created. We have found the solution by looking at:
http://stackoverflow.com/questions/8072311/illegalstateexception-cannot-create-a-session-after-the-response-has-been-commi
We account for it and in the end we reduced by 1 point the RF "Open issues" section.

Document Length:        53904 bytes
Requests per second:    33.46 [#/sec] (mean)
Time per request:       149.422 [ms] (mean)
Time per request:       29.884 [ms] (mean, across all concurrent requests)
Transfer rate:          1767.06 [Kbytes/sec] received

Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0    3   7.0      0      63
Processing:    47  146  93.0    125    1094
Waiting:        0   58  52.2     31     594
Total:         47  148  93.3    125    1094

Percentage of the requests served within a certain time (ms)

  50%    125
  66%    172
  75%    203
  80%    219
  90%    281
  95%    328
  98%    391
  99%    453
 100%   1094 (longest request)

Another benchmark found on the Web, produced the same "rankings": http://www.patternizando.com.br/2011/04/jsf-2-0-comparacao-de-desempenho-icefaces-primefaces-e-richfaces/

The best result was produced by Primefaces, followed by RichFaces. Icefaces was well behind, mostly due to the fact that a larger HTML page was produced (over 70KB).

richfaces vs icefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces  
icefaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces
 
primefaces vs richfaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces

7th round: trends

A picture is better than 1000 words:

trends icefaces vs richfaces vs primefaces

As you can see Icefaces and Richfaces are the old ones, having landed on the market between 2006 and 2007. At the beginning of 2011 the search volume index was quite the same for all three stacks, now Primefaces is the most searched one on the Web, followed by Richfaces and Icefaces. In statistical terms, it seems that Richfaces and Icefaces already had their technology peak around 2009, while Primefaces is going now for the peak.

richfaces vs icefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces  
icefaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces
 
primefaces vs richfaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces icefaces vs richfaces vs primefaces

Conclusions: well, at the end of this article we should emit our verdict. As in the foreword, we don't see a clear winner, just three good frameworks, each one with some pros and contros. Depending on your requirements, you might find better one instead of another. The following table resumes the pros and contros:


Pros Contros
richfaces vs icefaces Mature and widely adopted JSF library.
Has the most advanced server side integration.
Good performance.
Fewer components available, though you can use SDK to create new ones.
Documentation could be futher extended.
icefaces vs primefaces Unique 'Direct-2-DOM' rendering.
Large server side based components.
Greatest variety of docs and tutorials, though everything in IF requires registration.
Seems the less performant, at least comparing the dataTable.
Consistent number of Major issues open.
primefaces vs richfaces Huge collection of lightweight jQuery based components.
Simple to use and practical documentation.
Seems the fastest library.
The developers' trend says: Primefaces.
The youngest of the group so *possibly* less mature than IF and RF.
Being more client-centric, has fewer JSF core server enhancements than IF and RF.


Did you discover one of these three frameworks got one more "pros" than others ? :-)


Advertisement