I had a bit of a performance problem with some pages that I have tracked back
to my use of '.containsKey()' on the Seam messages Abstract Map.
eg:
| @In
| Map<String, String> messages; //This is the Seam messages bundle
|
| public void aMethod() {
| if(messages.containsKey("key.mykey")) {
| //do something
| }
| }
|
As containsKey isn't a method of the AbstractMap in
org.jboss.seam.international.Messages, it goes into a mad run through all sorts
of methods (ELResolver, Pages.java etc). The result of this is that a
containsKey() on messages takes over 800 times longer than a get(). For 1800
properties in my messages.properties file it takes about 800ms compared to
under 1ms for a get().
Nice to have found this as I had no idea that it would have such an impact. The
easy solution would be to add a containsKey() to the AbstractMap in
org.jboss.seam.international.Messages. This works well for me (and is under
1ms):
| public boolean containsKey(String key) {
| if(messages.get(key).equals(key)) {
| return false;
| } else {
| return true;
| }
| }
|
Cheers,
Damian.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4100622#4100622
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4100622
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user