pg_orrery/bench/benchmark_results_v2.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

203 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: 9.226 ms
--- CREATE SP-GiST INDEX ---
CREATE INDEX
Time: 18.724 ms
--- CREATE GiST INDEX ---
CREATE INDEX
Time: 44.994 ms
indexname | size
--------------------+---------
bench_catalog_pkey | 336 kB
bench_gist | 2904 kB
bench_spgist | 2344 kB
(3 rows)
Time: 3.750 ms
--- BENCHMARK 1: 2h window, Eagle Idaho, 10 deg min_el ---
SET
Time: 0.158 ms
SET
Time: 0.020 ms
seqscan_candidates
--------------------
2261
(1 row)
Time: 8.224 ms
RESET
Time: 0.102 ms
RESET
Time: 0.019 ms
SET
Time: 0.023 ms
spgist_candidates
-------------------
2261
(1 row)
Time: 9.787 ms
RESET
Time: 0.142 ms
--- BENCHMARK 2: 24h window, Eagle Idaho, 10 deg min_el ---
SET
Time: 0.044 ms
SET
Time: 0.013 ms
seqscan_candidates
--------------------
13562
(1 row)
Time: 4.272 ms
RESET
Time: 0.044 ms
RESET
Time: 0.015 ms
SET
Time: 0.017 ms
spgist_candidates
-------------------
13562
(1 row)
Time: 6.832 ms
RESET
Time: 0.065 ms
--- BENCHMARK 3: 2h window, Equator, 10 deg min_el ---
SET
Time: 0.025 ms
SET
Time: 0.010 ms
seqscan_candidates
--------------------
2073
(1 row)
Time: 5.868 ms
RESET
Time: 1.133 ms
RESET
Time: 0.083 ms
SET
Time: 0.032 ms
spgist_candidates
-------------------
2073
(1 row)
Time: 7.401 ms
RESET
Time: 0.105 ms
--- BENCHMARK 4: 2h window, Eagle Idaho, 45 deg min_el ---
SET
Time: 0.034 ms
SET
Time: 0.010 ms
seqscan_candidates
--------------------
1407
(1 row)
Time: 5.641 ms
RESET
Time: 0.153 ms
RESET
Time: 0.018 ms
SET
Time: 0.048 ms
spgist_candidates
-------------------
1407
(1 row)
Time: 6.581 ms
RESET
Time: 0.062 ms
--- CONSISTENCY CHECK ---
SET
Time: 0.049 ms
SET
Time: 0.012 ms
SELECT 2261
Time: 7.979 ms
RESET
Time: 0.159 ms
RESET
Time: 0.024 ms
SET
Time: 0.030 ms
SELECT 2261
Time: 7.533 ms
RESET
Time: 0.487 ms
in_seq_not_idx
----------------
0
(1 row)
Time: 1.214 ms
in_idx_not_seq
----------------
0
(1 row)
Time: 0.864 ms
DROP TABLE
Time: 1.814 ms
--- EXPLAIN ANALYZE: SP-GiST scan ---
SET
Time: 0.064 ms
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------
Aggregate (cost=51.38..51.39 rows=1 width=8) (actual time=7.322..7.325 rows=1.00 loops=1)
Buffers: shared hit=1075
-> Bitmap Heap Scan on bench_catalog (cost=4.38..51.35 rows=14 width=0) (actual time=6.921..7.255 rows=2261.00 loops=1)
Recheck Cond: (tle &? '("43.6977N 116.3535W 760m","2026-02-16 19:00:00-07","2026-02-16 21:00:00-07",10)'::observer_window)
Heap Blocks: exact=187
Buffers: shared hit=1075
-> Bitmap Index Scan on bench_spgist (cost=0.00..4.38 rows=14 width=0) (actual time=6.887..6.888 rows=2261.00 loops=1)
Index Cond: (tle &? '("43.6977N 116.3535W 760m","2026-02-16 19:00:00-07","2026-02-16 21:00:00-07",10)'::observer_window)
Index Searches: 1
Buffers: shared hit=888
Planning Time: 0.143 ms
Execution Time: 7.365 ms
(12 rows)
Time: 7.974 ms
RESET
Time: 0.084 ms
--- EXPLAIN ANALYZE: Sequential scan ---
SET
Time: 0.023 ms
SET
Time: 0.011 ms
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------
Aggregate (cost=470.74..470.75 rows=1 width=8) (actual time=6.037..6.039 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.016..5.952 rows=2261.00 loops=1)
Filter: (tle &? '("43.6977N 116.3535W 760m","2026-02-16 19:00:00-07","2026-02-16 21:00:00-07",10)'::observer_window)
Rows Removed by Filter: 12115
Buffers: shared hit=291
Planning Time: 0.130 ms
Execution Time: 6.066 ms
(8 rows)
Time: 6.589 ms
RESET
Time: 0.088 ms
RESET
Time: 2.471 ms
DROP TABLE
Time: 3.314 ms
Timing is off.