POI Optimization - Speeding up org.apache.poi.hssf.usermodel.HSSFRow.compareTo()
The compareTo() method calls getRowNum() up to three times. Normally this isn’t a problem
however the compareTo() method is called a lot - over three million times in my test case which uses
a small Excel spreadsheet.
Using a local int to cache the values reduced the exection time by 26.3 seconds. Here is the new version of
compareTo():
public int compareTo(Object obj) {
HSSFRow loc = (HSSFRow) obj;
int rv = -1;
int thisRowNum = this.getRowNum();
int locRowNum = loc.getRowNum();
if (thisRowNum == locRowNum) {
rv = 0;
} else if (thisRowNum < locRowNum) {
rv = -1;
} if (thisRowNum > locRowNum) {
rv = 1;
}
return rv;
}