aboutsummaryrefslogtreecommitdiffstats
path: root/experiments
diff options
context:
space:
mode:
authorblasty <peter@haxx.in>2026-08-10 00:25:10 +0200
committerblasty <peter@haxx.in>2026-08-10 00:25:10 +0200
commit0505eba99e0fc5b43d20f16c81ccbb916f11e06b (patch)
tree30bcd627a77b144a1b25d4cb78e102ac91c46a72 /experiments
parentSkeleton pages: stop rendering 227k rows to count them (3x boot) (diff)
downloadida-tui-0505eba99e0fc5b43d20f16c81ccbb916f11e06b.tar.gz
ida-tui-0505eba99e0fc5b43d20f16c81ccbb916f11e06b.tar.xz
ida-tui-0505eba99e0fc5b43d20f16c81ccbb916f11e06b.zip
remote_tools: item class by mask instead of is_code/is_data calls
The listing walk asked ida_bytes.is_code/is_data ~6 times per head (the row's kind, plus twice more via _is_unknown_f from _advance and _rows_for). Each is a python wrapper around a C call; the mask compare is the same question with no call at all. Equivalence was proven, not assumed: checked against is_code/is_data over all four classes x 16,020 synthetic flag values, and over every distinct flag in a real database (125 across 207,191 heads). Zero mismatches. Output is byte-identical over 3003 rows spanning all five row kinds. (The digest DOES differ run to run, which looked alarming until it turned out the same unmodified code differs too: hash() is seed-randomised per process and the digest is documented as per-process. Cross-process digest comparison proves nothing.) Worth 5.6% on a skeleton page (3.37 -> 3.18ms) and 2.7% on a full one -- the ~5% the profile predicted, not the 1.5-2x I guessed out loud. End to end it does NOT move bash's boot (3117 -> 3140ms, noise), because at 455 x 3.18ms the backend is now only ~1.45s of a 3.14s boot: the other ~54% is transport, Head construction and model bookkeeping on the client. Only the two hot sites changed. The four in the operand-format paths are not per-head and read better as is_code/is_data. Full gate: 1050 passed.
Diffstat (limited to 'experiments')
0 files changed, 0 insertions, 0 deletions