https://bz.apache.org/bugzilla/show_bug.cgi?id=60397
Stephen Webster <stephen.webs...@inetsoft.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEEDINFO |NEW --- Comment #5 from Stephen Webster <stephen.webs...@inetsoft.com> --- I have been watching this bug, and wanted to add some information that I have gathered since I didn't see any progress. Here is my testcase. for(int i=0; i < 20000; i++) { for(int j=0; j < 30; j+=3) { CellRangeAddress range = new CellRangeAddress(i,i,j,j+2); sheet.addMergedRegionUnsafe(range); } } The results get quite a bit worse as the number of rows/merged region number increases. 1000 rows -> 1.2 seconds 10000 rows -> 100 seconds 20000 rows -> Over 5 minutes. I dropped the above code and profiled it and turns out the time spent is in the return statement of addMergedRegion(), ctMergeCells.sizeOfMergeCellArray(); I am not using the return value of this method, after creating a locally modified version of the XSSFSheet class, I created a method without the return statement and the testcase finishes in less then 1 second instead of over 5 minutes for 20,000 rows. Here is the stack from profiler which was 90% of time spent Stack Trace org.apache.xmlbeans.impl.store.Locale.count(Xobj, QName, QNameSet) org.apache.xmlbeans.impl.store.Xobj.count_elements(QName) org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTMergeCellsImpl.sizeOfMergeCellArray() org.apache.poi.xssf.usermodel.XSSFSheet.addMergedRegion(CellRangeAddress, boolean) org.apache.poi.xssf.usermodel.XSSFSheet.addMergedRegionUnsafe(CellRangeAddress) -- You are receiving this mail because: You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@poi.apache.org For additional commands, e-mail: dev-h...@poi.apache.org