This builds on top of #519
- Don't zero-initialize the cells of freshly allocated rows
- Don't zero-initialize the cells of rows re-used from the scrollback
- Free rows from the old grid one by one "as we go", rather than all at once at the end
The first two points directly affect the time it takes to reflow the grid; zero-initializing new rows is completely unnecessary since they'll immediately get overwritten. There are two exceptions to this: one, rows with a hard line break. Here we need to "manually" clear the remaining cells when we insert the line break. Two, the last row may only be partially written. Here too, we need to clear the remaining cells.
The last point reduces our memory foot print, as we no longer need to hold both the old and the new grid, in their entirety, in memory at the same time. May also improve performance due to slightly better cache behavior (but I doubt it).
This builds on top of https://codeberg.org/dnkl/foot/pulls/519
* Don't zero-initialize the cells of freshly allocated rows
* Don't zero-initialize the cells of rows re-used from the scrollback
* Free rows from the old grid one by one "as we go", rather than all at once at the end
The first two points directly affect the time it takes to reflow the grid; zero-initializing new rows is completely unnecessary since they'll immediately get overwritten. There are two exceptions to this: one, rows with a hard line break. Here we need to "manually" clear the **remaining** cells when we insert the line break. Two, the _last_ row may only be partially written. Here too, we need to clear the **remaining** cells.
The last point reduces our memory foot print, as we no longer need to hold both the old and the new grid, in their entirety, in memory at the same time. _May_ also improve performance due to slightly better cache behavior (but I doubt it).