From b911299bd3a6a9ce733f421600eb8908dc88dbb1 Mon Sep 17 00:00:00 2001 From: Javen O'Neal Date: Sat, 11 Jun 2016 01:48:37 +0000 Subject: [PATCH] bug 57840: avoid auto-boxing ints for row/column TreeTable lookups (4% evaluation speedup at the cost of additional Integer objects); patch from Greg Woolsey git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1747837 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xssf/usermodel/XSSFRow.java | 10 +++++----- .../apache/poi/xssf/usermodel/XSSFSheet.java | 20 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java index 5c8b385b76..13b15bf28c 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java @@ -72,7 +72,7 @@ public class XSSFRow implements Row, Comparable { _cells = new TreeMap(); for (CTCell c : row.getCArray()) { XSSFCell cell = new XSSFCell(this, c); - _cells.put(cell.getColumnIndex(), cell); + _cells.put(new Integer(cell.getColumnIndex()), cell); sheet.onReadCell(cell); } } @@ -198,7 +198,7 @@ public class XSSFRow implements Row, Comparable { */ public XSSFCell createCell(int columnIndex, int type) { CTCell ctCell; - XSSFCell prev = _cells.get(columnIndex); + XSSFCell prev = _cells.get(new Integer(columnIndex)); if(prev != null){ ctCell = prev.getCTCell(); ctCell.set(CTCell.Factory.newInstance()); @@ -210,7 +210,7 @@ public class XSSFRow implements Row, Comparable { if (type != Cell.CELL_TYPE_BLANK) { xcell.setCellType(type); } - _cells.put(columnIndex, xcell); + _cells.put(new Integer(columnIndex), xcell); return xcell; } @@ -236,7 +236,7 @@ public class XSSFRow implements Row, Comparable { public XSSFCell getCell(int cellnum, MissingCellPolicy policy) { if(cellnum < 0) throw new IllegalArgumentException("Cell index must be >= 0"); - XSSFCell cell = _cells.get(cellnum); + XSSFCell cell = _cells.get(new Integer(cellnum)); if(policy == RETURN_NULL_AND_BLANK) { return cell; } @@ -455,7 +455,7 @@ public class XSSFRow implements Row, Comparable { if(cell.getCellType() == Cell.CELL_TYPE_FORMULA) { _sheet.getWorkbook().onDeleteFormula(xcell); } - _cells.remove(cell.getColumnIndex()); + _cells.remove(new Integer(cell.getColumnIndex())); } /** diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index a328f2ad93..f8c9724f29 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -222,7 +222,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { arrayFormulas = new ArrayList(); for (CTRow row : worksheetParam.getSheetData().getRowArray()) { XSSFRow r = new XSSFRow(row, this); - _rows.put(r.getRowNum(), r); + _rows.put(new Integer(r.getRowNum()), r); } } @@ -693,7 +693,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { @Override public XSSFRow createRow(int rownum) { CTRow ctRow; - XSSFRow prev = _rows.get(rownum); + XSSFRow prev = _rows.get(new Integer(rownum)); if(prev != null){ // the Cells in an existing row are invalidated on-purpose, in order to clean up correctly, we // need to call the remove, so things like ArrayFormulas and CalculationChain updates are done @@ -713,13 +713,13 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { } else { // get number of rows where row index < rownum // --> this tells us where our row should go - int idx = _rows.headMap(rownum).size(); + int idx = _rows.headMap(new Integer(rownum)).size(); ctRow = worksheet.getSheetData().insertNewRow(idx); } } XSSFRow r = new XSSFRow(ctRow, this); r.setRowNum(rownum); - _rows.put(rownum, r); + _rows.put(new Integer(rownum), r); return r; } @@ -1377,7 +1377,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { */ @Override public XSSFRow getRow(int rownum) { - return _rows.get(rownum); + return _rows.get(new Integer(rownum)); } /** @@ -1406,7 +1406,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { } } else { - rows.addAll(_rows.subMap(startRowNum, endRowNum+1).values()); + rows.addAll(_rows.subMap(new Integer(startRowNum), new Integer(endRowNum+1)).values()); } return rows; } @@ -1876,8 +1876,8 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { row.removeCell(cell); } - int idx = _rows.headMap(row.getRowNum()).size(); - _rows.remove(row.getRowNum()); + int idx = _rows.headMap(new Integer(row.getRowNum())).size(); + _rows.remove(new Integer(row.getRowNum())); worksheet.getSheetData().removeRow(idx); // also remove any comment located in that row @@ -2893,7 +2893,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { // check if we should remove this row as it will be overwritten by the data later if (shouldRemoveRow(startRow, endRow, n, rownum)) { // remove row from worksheet.getSheetData row array - int idx = _rows.headMap(row.getRowNum()).size(); + int idx = _rows.headMap(new Integer(row.getRowNum())).size(); worksheet.getSheetData().removeRow(idx); // remove row from _rows @@ -3012,7 +3012,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { //rebuild the _rows map SortedMap map = new TreeMap(); for(XSSFRow r : _rows.values()) { - map.put(r.getRowNum(), r); + map.put(new Integer(r.getRowNum()), r); } _rows = map; } -- 2.39.5