[jira] Commented: (LANG-340) performance problem with EqualsBuilder.append()

2009-09-06 Thread Henri Yandell (JIRA)

[ 
https://issues.apache.org/jira/browse/LANG-340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12751976#action_12751976
 ] 

Henri Yandell commented on LANG-340:


LANG-526 is a general performance improvement suggestion ticket.

 performance problem with EqualsBuilder.append()
 ---

 Key: LANG-340
 URL: https://issues.apache.org/jira/browse/LANG-340
 Project: Commons Lang
  Issue Type: Improvement
Affects Versions: 2.3
Reporter: Ramil Israfilov
 Fix For: 3.0


 We are using EqualsBuilder for construction of equals() method in our 
 javabeans.
 For example we have a class:
 public class SimpleRecord{
 String name;
 String label;
 ...
 public boolean equals(Object object) {
 return new EqualsBuilder().append(this.label, rhs.label).append(
 this.getName(), rhs.getName()).isEquals();
 }
 So far so good.
 But one of our applications uses extensively Stack to push/pop SimpleRecord 
 bean. And it was working very slow.
 After profiling of application we saw that most of the time JVM spent in 
 equals() method of SimpleRecord. (it is called during peek() which is calling 
 remove() from Stack)
 If we replace EqualsBuilder by following code our application worked 3 times 
 faster ! Could you make some optimizations ?
   if (!(object instanceof SimpleRecord)) {
 return false;
 }
 SimpleRecord rhs = (SimpleRecord) object;
 if (this.getName() == null  rhs.getName() != null) {
   return false;
 } else 
 if (rhs.getName() == null  this.getName() != null) {
   return false;
 } else
 if (this.label == null  rhs.label != null) {
   return false;
 } else
 if (rhs.label == null  this.label != null) {
   return false;
 } else
 if (this.label == null  rhs.label == null) {
   return this.getName().equals(rhs.getName()); 
 } else
 
 return this.getName().equals(rhs.getName())  
 this.label.equals(rhs.label);

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (LANG-340) performance problem with EqualsBuilder.append()

2008-07-01 Thread Robert Scholte (JIRA)

[ 
https://issues.apache.org/jira/browse/LANG-340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12609605#action_12609605
 ] 

Robert Scholte commented on LANG-340:
-

I think I have to agree with Henri. And there's an important difference between 
both code-samples:
The EqualsBuilder-implementation first checks the label, followed by the name, 
while the self-written one first checks the name.

Normally names would be more unique then labels, so I'm not really surprised 
the second implementation is faster.

 performance problem with EqualsBuilder.append()
 ---

 Key: LANG-340
 URL: https://issues.apache.org/jira/browse/LANG-340
 Project: Commons Lang
  Issue Type: Improvement
Affects Versions: 2.3
Reporter: Ramil Israfilov
 Fix For: 3.0


 We are using EqualsBuilder for construction of equals() method in our 
 javabeans.
 For example we have a class:
 public class SimpleRecord{
 String name;
 String label;
 ...
 public boolean equals(Object object) {
 return new EqualsBuilder().append(this.label, rhs.label).append(
 this.getName(), rhs.getName()).isEquals();
 }
 So far so good.
 But one of our applications uses extensively Stack to push/pop SimpleRecord 
 bean. And it was working very slow.
 After profiling of application we saw that most of the time JVM spent in 
 equals() method of SimpleRecord. (it is called during peek() which is calling 
 remove() from Stack)
 If we replace EqualsBuilder by following code our application worked 3 times 
 faster ! Could you make some optimizations ?
   if (!(object instanceof SimpleRecord)) {
 return false;
 }
 SimpleRecord rhs = (SimpleRecord) object;
 if (this.getName() == null  rhs.getName() != null) {
   return false;
 } else 
 if (rhs.getName() == null  this.getName() != null) {
   return false;
 } else
 if (this.label == null  rhs.label != null) {
   return false;
 } else
 if (rhs.label == null  this.label != null) {
   return false;
 } else
 if (this.label == null  rhs.label == null) {
   return this.getName().equals(rhs.getName()); 
 } else
 
 return this.getName().equals(rhs.getName())  
 this.label.equals(rhs.label);

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.