Commit 1dd3fe6
perf: replace AccessListInspector with post-execution state-diff blocklist check
Remove the AccessListInspector entirely from RBuilderEVMInspector.
Replace the per-opcode blocklist tracking with a post-execution check
against ResultAndState.state (EvmState = HashMap<Address, Account>),
which already contains every address touched during EVM execution.
The AccessListInspector called step() on every EVM opcode to build an
access list, solely used to check addresses against the blocklist.
Profiling showed this inspector overhead consumed ~52% of CPU time.
The EVM execution result already contains the same information in its
state diff, making the inspector entirely redundant.
Changes:
- order_commit.rs: Use create_evm() (NoOpInspector) when no
used_state_tracer is needed. Check blocklist via res.state.keys()
after execution instead of via access list.
- evm_inspector.rs: Remove AccessListInspector from
RBuilderEVMInspector. The inspector now only wraps the optional
UsedStateEVMInspector (used by parallel builder / EVM caching).
This optimization works regardless of whether a blocklist is configured.
Benchmark (builder-lab, 100 TPS, seed=42, 60s profiling window):
| Metric | Before | After | Change |
|---------------------|----------|----------|--------|
| Block fill p50 | 96.8ms | 58.9ms | -39% |
| Block fill p95 | 129.2ms | 87.1ms | -33% |
| E2E latency p50 | 98ms | 61ms | -38% |
| E2E latency p95 | 134ms | 92ms | -31% |
| Blocks submitted | 255 | 342 | +34% |
| Txs included | 17,882 | 23,449 | +31% |
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1 parent c66f845 commit 1dd3fe6
2 files changed
Lines changed: 31 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | 4 | | |
6 | 5 | | |
7 | 6 | | |
| |||
10 | 9 | | |
11 | 10 | | |
12 | 11 | | |
13 | | - | |
14 | 12 | | |
15 | 13 | | |
16 | 14 | | |
| |||
257 | 255 | | |
258 | 256 | | |
259 | 257 | | |
260 | | - | |
261 | 258 | | |
262 | 259 | | |
263 | 260 | | |
| |||
266 | 263 | | |
267 | 264 | | |
268 | 265 | | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | 266 | | |
273 | 267 | | |
274 | 268 | | |
275 | 269 | | |
276 | 270 | | |
277 | 271 | | |
278 | | - | |
279 | 272 | | |
280 | 273 | | |
281 | 274 | | |
282 | | - | |
283 | | - | |
284 | | - | |
285 | | - | |
286 | 275 | | |
287 | 276 | | |
288 | 277 | | |
| |||
292 | 281 | | |
293 | 282 | | |
294 | 283 | | |
295 | | - | |
296 | 284 | | |
297 | 285 | | |
298 | 286 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1162 | 1162 | | |
1163 | 1163 | | |
1164 | 1164 | | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
| 1173 | + | |
| 1174 | + | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
| 1181 | + | |
| 1182 | + | |
| 1183 | + | |
| 1184 | + | |
| 1185 | + | |
| 1186 | + | |
| 1187 | + | |
| 1188 | + | |
| 1189 | + | |
| 1190 | + | |
| 1191 | + | |
| 1192 | + | |
| 1193 | + | |
1165 | 1194 | | |
1166 | 1195 | | |
1167 | 1196 | | |
| |||
1177 | 1206 | | |
1178 | 1207 | | |
1179 | 1208 | | |
1180 | | - | |
1181 | | - | |
| 1209 | + | |
| 1210 | + | |
1182 | 1211 | | |
1183 | 1212 | | |
1184 | 1213 | | |
| |||
0 commit comments