The GitHub Actions job "Java CI with Gradle" on poi.git/shift-rows-perf-70139 has succeeded. Run started by GitHub user pjfanning (triggered by pjfanning).
Head commit for run: 2cc4c2bb2a0a3a02b8d638aa0a5266bace13116a / PJ Fanning <[email protected]> XSSFSheet.shiftRows: stop rebuilding every row from the XML on each shift https://bz.apache.org/bugzilla/show_bug.cgi?id=70139 Since the fix for bug 64516, rebuildRows() reordered the CTRow array of the sheet (an XmlBeans deep copy of every row) and recreated every XSSFRow and XSSFCell, twice per shiftRows call. Inserting single rows into a sheet with a few thousand rows became orders of magnitude slower than POI 4, and the XSSFRow/XSSFCell instances held by the caller were silently invalidated. Shifting only renumbers rows, so the CTRow elements normally stay in order and rebuildRows() now just refreshes the keys of the _rows map, keeping the existing row and cell instances. It is a no-op when nothing was renumbered (shiftColumns). The XML reorder plus recreation is kept for the rare case where rows jump over other rows (bug 64516). Recreating the rows also re-registered shared and array formulas via onReadCell; that is now done explicitly by rebuildFormulaBookkeeping() at the end of shiftRows/shiftColumns. It also uncovered that updateRowFormulas shifted a shared formula ref twice when the sheet's registry holds the live formula of a re-homed master (after the old master cell was deleted) rather than a detached copy - the recreation used to paper over that. Co-Authored-By: Claude Opus 5 <[email protected]> Report URL: https://github.com/apache/poi/actions/runs/35367778251 With regards, GitHub Actions via GitBox --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
