Performance

Every figure here is from one machine and is copied from capability_2026-10-21.md, which benchmarks/capability_report.py generates from the CSVs beside it. The tables below are extracted from that file when this page is built; nothing is retyped. The machine was an Intel Core Ultra 9 275HX with 24 logical cores and 31.4 GiB of RAM, Windows 11, MSVC without -march=native, Python 3.12.10. Other hardware will differ. Cells with reps of 1 are single runs and carry no spread.

One fit, about a million events

Pair decay, one start, se_method="hessian", a fresh process per run. label is the library’s own reliability label for that fit, a conditioning report and not a statement about bias.

M

rho

events

reps

iters

total

range

ms/iter

Hessian

grad calls

dominant

label

2

0.3

1,002,145

3

40

7.16 s

6.24-7.51 s

101.04

3.12 s

40

Hessian (44%)

reliable

2

0.85

1,007,524

3

41

9.97 s

9.26-10.06 s

148.60

3.88 s

40

per-iteration cost (148.60 ms)

reliable

4

0.3

1,001,682

1

183

54.51 s

54.51-54.51 s

149.03

27.23 s

144

Hessian (50%)

reliable

4

0.85

1,009,253

1

104

42.39 s

42.39-42.39 s

227.44

18.74 s

144

Hessian (44%)

reliable

6

0.3

1,002,063

1

454

4.9 min

294.77-294.77 s

387.56

118.82 s

312

Hessian (40%)

reliable

6

0.85

1,014,019

1

424

4.9 min

294.30-294.30 s

443.07

106.44 s

312

per-iteration cost (443.07 ms)

reliable

8

0.3

1,001,390

1

812

13.8 min

828.62-828.62 s

727.88

237.58 s

544

iteration count (812)

reliable

8

0.85

1,013,262

1

974

12.3 min

739.99-739.99 s

482.91

269.63 s

544

iteration count (974)

reliable

The slowest fit measured took 13.8 min (828.62 s), at eight types, \(\rho = 0.3\) and 1,001,390 events. The one-hour wall was not reached. Nothing above \(N = 10^6\) was timed. The full table, including the smaller \(N\) where large \(M\) is dominated by iteration count, is in the capability file.

An honest interval costs more

se_method="bootstrap" at four types, \(N = 10^5\), \(B = 200\). “default” is the pool of all logical cores. Larger bootstrap configurations were not timed.

M

events

B

workers

total

range

bootstrap alone

per replication

4

100,000

200

1

8.5 min

510.08-510.08 s

8.5 min

2.537 s

4

100,000

200

4

2.3 min

140.04-140.04 s

2.3 min

0.691 s

4

100,000

200

default

86.42 s

86.42-86.42 s

-

-

Pair decay against shared decay

Median time of one likelihood call at \(N = 10^6\). This is a call-level ratio. A fit-level speed-up for shared decay was not measured, and shared decay is a different model.

M

N

work

pair

shared

ratio

2

1,000,000

value

37.2 ms

37.3 ms

1.0x

2

1,000,000

value+grad

52.8 ms

45.0 ms

1.2x

4

1,000,000

value

101.7 ms

29.9 ms

3.4x

4

1,000,000

value+grad

116.6 ms

39.5 ms

3.0x

6

1,000,000

value

271.9 ms

35.2 ms

7.7x

6

1,000,000

value+grad

339.8 ms

45.8 ms

7.4x

8

1,000,000

value

271.8 ms

49.0 ms

5.6x

8

1,000,000

value+grad

410.3 ms

74.9 ms

5.5x

Memory

The capability file reports about 33 bytes per event, nearly independent of \(M\) and unchanged by the Hessian pass, and a peak of 316 MiB above the import baseline at \(N = 10^7\). Memory does not bind before time does on that machine. The Linux measurement path was implemented but not run.