Yes, this is inefficient in some cases, this is already handled in https://bz.apache.org/bugzilla/show_bug.cgi?id=54593 there were some discussion about possible changes but unfortunately no full solution yet.
Dominik. On Sat, Aug 18, 2018 at 10:22 PM monnomiznog...@gmail.com < monnomiznog...@gmail.com> wrote: > Hi, > A bit surprised by the inefficiency of some elements in XSSF. > > Take for example XSSFCellBorder.equals method: > > public boolean equals(Object o) { > if (!(o instanceof XSSFCellBorder)) return false; > > XSSFCellBorder cf = (XSSFCellBorder) o; > return border.toString().equals(cf.getCTBorder().toString()); > } > > I created an .xlsx file with 12000+ cells, with borders. This means the > library calls StylesTable.putBorder some 96000 times (12000 * 4 * 2, 12000 > cells, 4 borders, and 2 calls per border style + color) > > putBorder calls "indexOf" on the borders list, and so indexOf calls > XSSFCellBorder.equals for every element in the borders list. > > The equals method tests 2 strings constructed from complex XML objects. > > Writing the file takes 3 minutes ! > > With SmartXLS it takes less than 3 seconds. > > Do you think this behavior could be modified somehow ? > > Regards > FD > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@poi.apache.org > For additional commands, e-mail: dev-h...@poi.apache.org > >