pg_orrery/bench/benchmark_results.txt
Ryan Malloy 845aeee3a5 Add pass prediction guide, operator reference, and benchmarks
New docs:
- guides/pass-prediction.mdx: two-stage workflow (SP-GiST filter
  then SGP4 propagation), query window comparison tabs, GiST/SP-GiST
  coexistence example
- reference/operators-gist.mdx: &? operator signature and description,
  observer_window type reference, SP-GiST operator class docs with
  eccentricity/HEO limitation aside

Benchmarks on 14,376 CelesTrak active satellites:
- SP-GiST index: 2,344 kB, builds in 19 ms
- GiST index: 2,904 kB, builds in 45 ms
- Consistency: 0 false negatives, 0 false positives
- At 14k catalog size, seqscan (~6 ms) still beats index scan (~8 ms)
  due to low page count; cross-over expected at ~100k objects
2026-02-17 21:30:57 -07:00

194 lines
4.3 KiB
Plaintext

Timing is on.
regime | n | pct
--------------------+-------+------
LEO (<2000km) | 13587 | 94.5
GEO/HEO (>34000km) | 588 | 4.1
MEO (2000-20000km) | 111 | 0.8
GEO-transfer | 90 | 0.6
(4 rows)
Time: 7.139 ms
--- CREATE SP-GiST INDEX ---
CREATE INDEX
Time: 12.351 ms
spgist_size
-------------
2424 kB
(1 row)
Time: 1.388 ms
--- BENCHMARK 1: 2h window, Eagle Idaho, 10 deg min_el ---
SET
Time: 0.035 ms
SET
Time: 0.021 ms
Sequential scan:
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------
Aggregate (cost=470.74..470.75 rows=1 width=8) (actual time=2.706..2.707 rows=1.00 loops=1)
Buffers: shared hit=291
-> Seq Scan on bench_catalog (cost=0.00..470.70 rows=14 width=0) (actual time=0.015..2.649 rows=2261.00 loops=1)
Filter: ('("43.6977N 116.3535W 760m","2026-02-16 19:00:00-07","2026-02-16 21:00:00-07",10)'::observer_window &? tle)
Rows Removed by Filter: 12115
Buffers: shared hit=291
Planning:
Buffers: shared hit=8
Planning Time: 0.093 ms
Execution Time: 2.725 ms
(10 rows)
Time: 3.621 ms
RESET
Time: 0.028 ms
RESET
Time: 0.009 ms
SET
Time: 0.012 ms
SP-GiST index scan:
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------
Aggregate (cost=1754.89..1754.90 rows=1 width=8) (actual time=3.896..3.897 rows=1.00 loops=1)
Buffers: shared hit=1161
-> Bitmap Heap Scan on bench_catalog (cost=1284.16..1754.86 rows=14 width=0) (actual time=0.957..3.833 rows=2261.00 loops=1)
Filter: ('("43.6977N 116.3535W 760m","2026-02-16 19:00:00-07","2026-02-16 21:00:00-07",10)'::observer_window &? tle)
Rows Removed by Filter: 12115
Heap Blocks: exact=291
Buffers: shared hit=1161
-> Bitmap Index Scan on bench_spgist (cost=0.00..1284.16 rows=14376 width=0) (actual time=0.925..0.925 rows=14376.00 loops=1)
Index Searches: 1
Buffers: shared hit=870
Planning Time: 0.050 ms
Execution Time: 3.936 ms
(12 rows)
Time: 4.150 ms
RESET
Time: 0.038 ms
--- BENCHMARK 2: 24h window, Eagle Idaho, 10 deg min_el ---
SET
Time: 0.016 ms
SET
Time: 0.009 ms
Sequential scan:
seqscan_24h
-------------
13562
(1 row)
Time: 2.867 ms
RESET
Time: 0.023 ms
RESET
Time: 0.008 ms
SET
Time: 0.011 ms
SP-GiST index scan:
spgist_24h
------------
13562
(1 row)
Time: 3.832 ms
RESET
Time: 0.025 ms
--- BENCHMARK 3: 2h window, Equator, 10 deg min_el ---
SET
Time: 0.011 ms
SET
Time: 0.008 ms
Sequential scan:
seqscan_equator
-----------------
2073
(1 row)
Time: 2.564 ms
RESET
Time: 0.011 ms
RESET
Time: 0.007 ms
SET
Time: 0.008 ms
SP-GiST index scan:
spgist_equator
----------------
2073
(1 row)
Time: 3.566 ms
RESET
Time: 0.020 ms
--- BENCHMARK 4: 2h window, Eagle Idaho, 45 deg min_el ---
SET
Time: 0.010 ms
SET
Time: 0.006 ms
Sequential scan:
seqscan_45deg
---------------
1407
(1 row)
Time: 2.510 ms
RESET
Time: 0.021 ms
RESET
Time: 0.007 ms
SET
Time: 0.008 ms
SP-GiST index scan:
spgist_45deg
--------------
1407
(1 row)
Time: 3.591 ms
RESET
Time: 0.014 ms
--- CONSISTENCY CHECK ---
SET
Time: 0.017 ms
SET
Time: 0.009 ms
SELECT 2261
Time: 4.578 ms
RESET
Time: 0.023 ms
RESET
Time: 0.008 ms
SET
Time: 0.010 ms
SELECT 2261
Time: 3.583 ms
RESET
Time: 0.022 ms
in_seq_not_idx
----------------
0
(1 row)
Time: 0.586 ms
in_idx_not_seq
----------------
0
(1 row)
Time: 0.280 ms
DROP TABLE
Time: 0.951 ms
--- PRUNING SUMMARY ---
scenario | catalog_size | candidates | candidate_pct | pruning_pct
------------------+--------------+------------+---------------+-------------
2h/Eagle/10deg | 14376 | 2261 | 15.7 | 84.3
2h/Eagle/45deg | 14376 | 1407 | 9.8 | 90.2
2h/Equator/10deg | 14376 | 2073 | 14.4 | 85.6
24h/Eagle/10deg | 14376 | 13562 | 94.3 | 5.7
(4 rows)
Time: 9.346 ms
DROP INDEX
Time: 1.176 ms
DROP TABLE
Time: 1.725 ms
Timing is off.