diff options
| author | blasty <blasty@local> | 2026-08-07 15:09:40 +0200 |
|---|---|---|
| committer | blasty <blasty@local> | 2026-08-07 15:09:40 +0200 |
| commit | 1ee6f15d4940138153e439bd97ea33f5b1fb56ba (patch) | |
| tree | 3f08a83f0d99f3d3fc7069b7be00d235bab82817 /idatui/remote_tools.py | |
| parent | SPEED.md: where the last 2ms goes, and why batching is not worth building (diff) | |
| download | ida-tui-1ee6f15d4940138153e439bd97ea33f5b1fb56ba.tar.gz ida-tui-1ee6f15d4940138153e439bd97ea33f5b1fb56ba.tar.xz ida-tui-1ee6f15d4940138153e439bd97ea33f5b1fb56ba.zip | |
docs: upstream findings for the ida-codemode maintainers
Nine items found while porting a latency-sensitive client, each with the
measurement behind it and a suggested fix, ordered by what it cost us.
The two that matter: timeout_trace returns itself, which turns on line tracing
in every frame (52x on ida_bytes.get_flags, 10x on a listing page), and
to_jsonable walking large results (114x what json.dumps of the same data
costs). Together they were the difference between 35x slower than the worker
we replaced and within 2x of it. Both live in the runtime, so every client
pays them until they are fixed centrally -- we only found them because we had
an in-process implementation to compare against.
Also records the things we had to reach into internals for (waiting for a
lease to release), the failure modes that are silent or fatal rather than
typed (loader switches on an existing IDB, an IDB replaced under a live
lease), and the one feature we could not port at all (discard-and-quit, since
a managed worker saves when its final lease closes).
Diffstat (limited to 'idatui/remote_tools.py')
0 files changed, 0 insertions, 0 deletions
