summaryrefslogtreecommitdiff
path: root/tests/spec_test.c
diff options
context:
space:
mode:
authorBerke Güzel <wenekar1@gmail.com>2026-10-15 12:53:42 +0300
committerBerke Güzel <wenekar1@gmail.com>2026-10-15 12:53:42 +0300
commitbd8222e615134c3ec5e7a07b6b1fa97c9bd4a471 (patch)
tree477acdf2fecca51f17c8bc0b461d8fe247f1e233 /tests/spec_test.c
parent6d2dc774947787dcef73a3251d1e9ec51bc526df (diff)
Convert each changed snapshot row once
The atomic update counted arena words by converting every changed row in phase 1, then converted it again in apply(). A history row is decoded on each conversion, so paging through history took 74% longer, and a full redraw 20% longer. A changed row is now converted once. Small updates reserve the arena for the most their rows can add, then convert in apply() straight into the cells, as before. Larger updates and rebuilds convert into a stage in phase 1, with cluster records after the live ones or in a spare arena, and apply() copies the smaller of the kept and staged parts, swapping the stage in when that saves the copy. A failed update still changes nothing a reader sees. A row that scrolls in from below no longer counts as kept when its new key is 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/spec_test.c')
0 files changed, 0 insertions, 0 deletions