Repository navigation
Commit cc98e80
committed
fix(templates): place the blocks of a chain in time linear in its blocks
Each block placed looked up the blocks it holds among all the blocks of its template,
so placing a template's blocks took time quadratic in their number: a 501 KB template
of 16,000 empty blocks took more than 8 s to collect, where main takes 0.07 s, and the
full analysis 11.6 s instead of 0.5 s.
The blocks each block holds, and those standing in no block, are now indexed once per
chain, while the blocks are listed. The same 16,000 blocks are placed in 0.08 s, and
the full analysis takes 0.3 s. What is placed does not change.1 parent 33b25c7 commit cc98e80
2 files changed
Lines changed: 33 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1099 | 1099 | | |
1100 | 1100 | | |
1101 | 1101 | | |
| 1102 | + | |
1102 | 1103 | | |
1103 | 1104 | | |
1104 | 1105 | | |
1105 | | - | |
1106 | | - | |
| 1106 | + | |
| 1107 | + | |
1107 | 1108 | | |
1108 | 1109 | | |
1109 | 1110 | | |
| |||
1113 | 1114 | | |
1114 | 1115 | | |
1115 | 1116 | | |
1116 | | - | |
1117 | | - | |
1118 | | - | |
| 1117 | + | |
| 1118 | + | |
1119 | 1119 | | |
1120 | 1120 | | |
1121 | 1121 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
15 | 18 | | |
16 | 19 | | |
17 | 20 | | |
| |||
22 | 25 | | |
23 | 26 | | |
24 | 27 | | |
| 28 | + | |
25 | 29 | | |
26 | 30 | | |
27 | 31 | | |
| |||
207 | 211 | | |
208 | 212 | | |
209 | 213 | | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
0 commit comments