Commit 514f500
committed
perf(gap): hoist UUID-list bounds check via safe_end
Pre-compute ``safe_end = start + ((end - start) & ~(N-1))`` ahead of each
16/32/128-bit Service UUID list loop and trim the ``range`` instead of
re-evaluating ``i + N <= end`` inside the loop body. The stride is a
power of two for all three paths, so the bit-AND drops any malformed
trailing remainder — same skip semantics, fewer per-iter ops.
Pure-Python microbench (200k iters, min of 5):
- 16-bit list (7 UUIDs): 4.24us -> 3.42us (-19%)
- 32-bit list (3 UUIDs): 3.57us -> 3.06us (-14%)
- 128-bit list (2 UUIDs): 2.27us -> 2.40us (small setup cost dominates
at N=2 in pure Python; cythonized integer ops are C-level so the
setup is essentially free there)
Pxd: type ``safe_end`` as ``cython.uint`` alongside ``start``/``end``/``i``.1 parent 95b0c33 commit 514f500
2 files changed
Lines changed: 29 additions & 24 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
| 56 | + | |
56 | 57 | | |
57 | 58 | | |
58 | 59 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
252 | 252 | | |
253 | 253 | | |
254 | 254 | | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | | - | |
259 | | - | |
260 | | - | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
261 | 264 | | |
262 | 265 | | |
263 | 266 | | |
264 | 267 | | |
265 | 268 | | |
266 | 269 | | |
267 | 270 | | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
274 | | - | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | | - | |
279 | | - | |
280 | | - | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
281 | 285 | | |
282 | 286 | | |
283 | 287 | | |
| |||
287 | 291 | | |
288 | 292 | | |
289 | 293 | | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | | - | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
295 | 299 | | |
296 | 300 | | |
297 | 301 | | |
| |||
0 commit comments