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

Reply via email to