This PR improves the performance of parsing ODS file, which produced by some spreadsheets, like LibreOffice Calc or Google Sheet, which add table:number-columns-repeated with large value, about 16000. We can make pushing empty cell with table:number-columns-repeated attribute lazy. See also the same optimization for table:number-rows-repeated in #308.
tests/issues.ods
$ cargo benchcmp old new
name old ns/iter new3 ns/iter diff ns/iter diff % speedup
bench_ods 18,599,072 79,045 -18,520,027 -99.58% x 235.30
bench_xls 32,034 33,291 1,257 3.92% x 0.96
bench_xlsb 134,122 132,433 -1,689 -1.26% x 1.01
bench_xlsx 206,179 207,691 1,512 0.73% x 0.99
This PR improves the performance of parsing ODS file, which produced by some spreadsheets, like LibreOffice Calc or Google Sheet, which add
table:number-columns-repeated
with large value, about 16000. We can make pushing empty cell withtable:number-columns-repeated
attribute lazy. See also the same optimization fortable:number-rows-repeated
in #308.tests/issues.ods
tests/special_cells.ods (w/o
table:number-columns-repeated
)The new test add test of handling merged cell (
table:covered-table-cell
) before empty cell.