Skip to content

Commit 4d2805f

Browse files
committed
readme: update benchmark results 📝
1 parent c1cb55e commit 4d2805f

File tree

1 file changed

+21
-23
lines changed

1 file changed

+21
-23
lines changed

readme.md

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -278,32 +278,30 @@ AND "date" <= dates_filter_max('2022-03-23T12:35:00+01') -- evaluates to 2023-03
278278

279279
`gtfs-via-duckdb` is fast enough for most use cases I can think of. If there's a particular kind of query that you think should be faster, please [open an Issue](https://github.com/public-transport/gtfs-via-duckdb/issues/new)!
280280

281-
todo: re-run them
282-
The following benchmarks were run with the [2025-05-21 VBB GTFS dataset](https://vbb-gtfs.jannisr.de/2025-05-21/) (41k `stops`, 6m `stop_times`, 207m arrivals/departures) using `[email protected]` and DuckDB v1.3 on an [M2](https://en.wikipedia.org/wiki/Apple_M2) laptop running macOS 14.7.6; All measurements are in milliseconds.
281+
The following benchmarks were run with the [2025-05-21 VBB GTFS dataset](https://vbb-gtfs.jannisr.de/2025-05-21/) (41k `stops`, 6m `stop_times`, 207m arrivals/departures) using `[email protected]` and DuckDB v1.3 on an [M2](https://en.wikipedia.org/wiki/Apple_M2) laptop running macOS 14.7.7; All measurements are in milliseconds.
283282

284283
| query | avg | min | p25 | p50 | p75 | p95 | p99 | max | iterations |
285284
| - | - | - | - | - | - | - | - | - | - |
286-
| <pre>SELECT *<br>FROM stops<br>ORDER BY ST_Distance(stop_loc::geometry, ST_SetSRID(ST_MakePoint(9.7, 50.547), 4326)) ASC<br>LIMIT 100</pre> | 15 | 14.982 | 15 | 15 | 15 | 15 | 15 | 15.488 | 100 |
287-
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE route_short_name = 'S1'<br>AND t_departure >= '2022-08-09T07:10+02' AND t_departure <= '2022-08-09T07:30+02'<br>AND date >= dates_filter_min('2022-08-09T07:10+02')<br>AND date <= dates_filter_max('2022-08-09T07:30+02')</pre> | 61 | 60.901 | 61 | 61 | 61 | 61 | 62 | 61.778 | 100 |
288-
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE station_id = 'de:11000:900100001' -- S+U Friedrichstr. (Berlin)<br>AND t_departure >= '2022-08-09T07:10+02' AND t_departure <= '2022-08-09T07:30+02'<br>AND date >= dates_filter_min('2022-08-09T07:10+02')<br>AND date <= dates_filter_max('2022-08-09T07:30+02')</pre> | 33 | 33.129 | 33 | 33 | 33 | 33 | 33 | 33.342 | 40 |
289-
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE station_id = 'de:11000:900100001' -- S+U Friedrichstr. (Berlin)<br>AND t_departure >= '2022-08-09T07:10+02' AND t_departure <= '2022-08-09T07:30+02'<br>AND date >= dates_filter_min('2022-08-09T07:10+02')<br>AND date <= dates_filter_max('2022-08-09T07:30+02')<br>AND stop_sequence = 0</pre> | 5 | 4.548 | 5 | 5 | 5 | 5 | 5 | 4.598 | 50 |
290-
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE stop_id = 'de:11000:900100001::4' -- S+U Friedrichstr. (Berlin)<br>AND t_departure >= '2022-08-09T07:10+02' AND t_departure <= '2022-08-09T07:30+02'<br>AND date >= dates_filter_min('2022-08-09T07:10+02')<br>AND date <= dates_filter_max('2022-08-09T07:30+02')</pre> | 8 | 8.038 | 8 | 8 | 8 | 8 | 8 | 8.164 | 100 |
291-
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE trip_id = '168977951'<br>AND date > '2022-08-08' AND date <= '2022-08-09'</pre> | 2 | 1.878 | 2 | 2 | 2 | 2 | 2 | 1.911 | 100 |
292-
| <pre>SELECT count(*)<br>FROM arrivals_departures<br>WHERE stop_id = 'de:11000:900100001::4' -- S+U Friedrichstr. (Berlin)</pre> | 58 | 57.485 | 58 | 58 | 58 | 58 | 58 | 57.789 | 100 |
293-
| <pre>SELECT count(*)<br>FROM arrivals_departures<br>WHERE stop_id = 'definitely-non-existent'</pre> | 2 | 1.832 | 2 | 2 | 2 | 2 | 2 | 1.876 | 100 |
294-
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE t_departure >= '2022-08-09T07:10+02' AND t_departure <= '2022-08-09T07:30+02'<br>AND date >= dates_filter_min('2022-08-09T07:10+02'::timestamp with time zone)<br>AND date <= dates_filter_max('2022-08-09T07:30+02'::timestamp with time zone)</pre> | 6310 | 6238.819 | 6241 | 6262 | 6311 | 6503 | 6560 | 6573.768 | 10 |
295-
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE t_departure >= '2022-08-09T07:10+02' AND t_departure <= '2022-08-09T07:30+02'<br>AND date >= '2022-08-08'<br>AND date <= '2022-08-09'</pre> | 4931 | 4914.388 | 4925 | 4928 | 4937 | 4946 | 4948 | 4948.689 | 10 |
296-
| <pre>SELECT *<br>FROM connections<br>WHERE route_short_name = 'S1'<br>AND t_departure >= '2022-08-09T07:10+02' AND t_departure <= '2022-08-09T07:30+02'<br>AND date >= dates_filter_min('2022-08-09T07:10+02')<br>AND date <= dates_filter_max('2022-08-09T07:30+02')</pre> | 164 | 163.018 | 163 | 164 | 164 | 164 | 165 | 166.568 | 100 |
297-
| <pre>SELECT *<br>FROM connections<br>WHERE from_station_id = 'de:11000:900100001' -- S+U Friedrichstr. (Berlin)<br>AND t_departure >= '2022-08-09T07:10+02' AND t_departure <= '2022-08-09T07:30+02'<br>AND date >= dates_filter_min('2022-08-09T07:10+02')<br>AND date <= dates_filter_max('2022-08-09T07:30+02')</pre> | 59 | 58.137 | 58 | 58 | 59 | 60 | 61 | 61.461 | 40 |
298-
| <pre>SELECT *<br>FROM connections<br>WHERE from_station_id = 'de:11000:900100001' -- S+U Friedrichstr. (Berlin)<br>AND t_departure >= '2022-08-09T07:10+02' AND t_departure <= '2022-08-09T07:30+02'<br>AND date >= dates_filter_min('2022-08-09T07:10+02')<br>AND date <= dates_filter_max('2022-08-09T07:30+02')<br>AND from_stop_sequence = 0</pre> | 7 | 7.439 | 7 | 7 | 7 | 7 | 7 | 7.49 | 50 |
299-
| <pre>SELECT *<br>FROM connections<br>WHERE from_stop_id = 'de:11000:900100001::4' -- S+U Friedrichstr. (Berlin)<br>AND t_departure >= '2022-08-09T07:10+02' AND t_departure <= '2022-08-09T07:30+02'<br>AND date >= dates_filter_min('2022-08-09T07:10+02')<br>AND date <= dates_filter_max('2022-08-09T07:30+02')</pre> | 15 | 14.529 | 15 | 15 | 15 | 15 | 15 | 14.698 | 100 |
300-
| <pre>SELECT *<br>FROM connections<br>WHERE trip_id = '168977951'<br>AND date > '2022-08-08' AND date <= '2022-08-09'</pre> | 3 | 2.86 | 3 | 3 | 3 | 3 | 3 | 2.931 | 100 |
301-
| <pre>SELECT count(*)<br>FROM connections<br>WHERE from_stop_id = 'de:11000:900100001::4' -- S+U Friedrichstr. (Berlin)</pre> | 73 | 72.687 | 73 | 73 | 73 | 73 | 73 | 73.35 | 100 |
302-
| <pre>SELECT count(*)<br>FROM connections<br>WHERE from_stop_id = 'definitely-non-existent'</pre> | 3 | 3.428 | 3 | 3 | 3 | 3 | 4 | 3.525 | 100 |
303-
| <pre>SELECT *<br>FROM connections<br>WHERE t_departure >= '2022-08-09T07:10+02' AND t_departure <= '2022-08-09T07:30+02'<br>AND date >= dates_filter_min('2022-08-09T07:10+02'::timestamp with time zone)<br>AND date <= dates_filter_max('2022-08-09T07:30+02'::timestamp with time zone)<br>ORDER BY t_departure<br>LIMIT 100</pre> | 13127 | 13056.841 | 13086 | 13125 | 13170 | 13194 | 13199 | 13200.027 | 7 |
304-
| <pre>SELECT *<br>FROM connections<br>WHERE t_departure >= '2022-08-09T07:10+02' AND t_departure <= '2022-08-09T07:30+02'<br>AND date >= '2022-08-08'<br>AND date <= '2022-08-09'<br>ORDER BY t_departure<br>LIMIT 100</pre> | 6417 | 6237.932 | 6346 | 6394 | 6512 | 6562 | 6570 | 6571.455 | 7 |
305-
| <pre>SELECT *<br>FROM stats_by_route_date<br>WHERE route_id = '17452_900' -- M4<br>AND date >= '2022-08-08' AND date <= '2022-08-14'<br>AND is_effective = true</pre> | 2862 | 2853.972 | 2860 | 2863 | 2863 | 2867 | 2867 | 2866.798 | 10 |
306-
285+
| <pre>SELECT *<br>FROM stops<br>ORDER BY ST_Distance(stop_loc::geometry, ST_Point(9.7, 50.547)) ASC<br>LIMIT 100</pre> | 6.35 | 5.91 | 5.98 | 6.25 | 6.6 | 6.86 | 8.41 | 10.05 | 1576 |
286+
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE route_short_name = 'S1'<br>AND t_departure >= '2025-05-27T07:10:00+02' AND t_departure <= '2025-05-27T07:30:00+02'<br>AND date >= dates_filter_min('2025-05-27T07:10:00+02'::timestamp with time zone)<br>AND date <= dates_filter_max('2025-05-27T07:30+02'::timestamp with time zone)</pre> | 305.15 | 260.52 | 303.8 | 307.73 | 312.2 | 320.64 | 326.84 | 328.44 | 33 |
287+
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE station_id = 'de:11000:900100001' -- S+U Friedrichstr. (Berlin)<br>AND t_departure >= '2025-05-27T07:10+02' AND t_departure <= '2025-05-27T07:30+02'<br>AND date >= dates_filter_min('2025-05-27T07:10+02')<br>AND date <= dates_filter_max('2025-05-27T07:30+02')</pre> | 129.43 | 119.85 | 126.19 | 128.62 | 131.84 | 138.44 | 140.46 | 142 | 78 |
288+
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE station_id = 'de:11000:900100001' -- S+U Friedrichstr. (Berlin)<br>AND t_departure >= '2025-05-27T07:10+02' AND t_departure <= '2025-05-27T07:30+02'<br>AND date >= dates_filter_min('2025-05-27T07:10+02')<br>AND date <= dates_filter_max('2025-05-27T07:30+02')<br>AND stop_sequence = 0</pre> | 81.42 | 65.73 | 79.48 | 82.11 | 84.33 | 87.26 | 89.64 | 102.97 | 123 |
289+
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE stop_id = 'de:11000:900100001::4' -- S+U Friedrichstr. (Berlin)<br>AND t_departure >= '2025-05-27T07:10+02' AND t_departure <= '2025-05-27T07:30+02'<br>AND date >= dates_filter_min('2025-05-27T07:10+02')<br>AND date <= dates_filter_max('2025-05-27T07:30+02')</pre> | 83.79 | 64.57 | 82.15 | 84.64 | 85.83 | 91.36 | 95.79 | 97.08 | 120 |
290+
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE trip_id = '262623609' -- route_id=10144_109, route_short_name=S2<br>AND date = '2025-05-27'</pre> | 14.25 | 12.38 | 13.42 | 13.98 | 14.84 | 16.12 | 18.98 | 21.77 | 702 |
291+
| <pre>SELECT count(*)<br>FROM arrivals_departures<br>WHERE stop_id = 'de:11000:900100001::4' -- S+U Friedrichstr. (Berlin)</pre> | 70.9 | 67.54 | 69.09 | 70.1 | 72.47 | 75.73 | 77.24 | 78.83 | 142 |
292+
| <pre>SELECT count(*)<br>FROM arrivals_departures<br>WHERE stop_id = 'definitely-non-existent'</pre> | 23.61 | 20.31 | 21.97 | 22.67 | 24.84 | 27.51 | 30.78 | 40.43 | 424 |
293+
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE t_departure >= '2025-05-27T07:10+02' AND t_departure <= '2025-05-27T07:30+02'<br>AND date >= '2025-05-25'<br>AND date <= '2025-05-27'</pre> | 1269.86 | 1139.03 | 1254.52 | 1272.09 | 1318.94 | 1329.66 | 1331.44 | 1331.89 | 8 |
294+
| <pre>SELECT *<br>FROM arrivals_departures<br>WHERE t_departure >= '2025-05-27T07:10:00+02' AND t_departure <= '2025-05-27T07:30:00+02'<br>AND "date" >= dates_filter_min('2025-05-27T07:10:00+02'::timestamp with time zone)<br>AND "date" <= dates_filter_max('2025-05-27T07:30:00+02'::timestamp with time zone)</pre> | 34148.21 | 32101.25 | 33459.12 | 34816.99 | 35171.69 | 35455.44 | 35512.2 | 35526.38 | 3 |
295+
| <pre>SELECT *<br>FROM connections<br>WHERE route_short_name = 'S1'<br>AND t_departure >= '2025-05-27T07:10+02' AND t_departure <= '2025-05-27T07:30+02'<br>AND date >= dates_filter_min('2025-05-27T07:10+02')<br>AND date <= dates_filter_max('2025-05-27T07:30+02')</pre> | 8697.84 | 8629.78 | 8673.26 | 8716.73 | 8731.86 | 8743.96 | 8746.39 | 8746.99 | 3 |
296+
| <pre>SELECT *<br>FROM connections<br>WHERE from_station_id = 'de:11000:900194006' -- S Schöneweide/Sterndamm (Berlin)<br>AND t_departure >= '2025-05-27T07:10+02' AND t_departure <= '2025-05-27T07:30+02'<br>AND date >= dates_filter_min('2025-05-27T07:10+02')<br>AND date <= dates_filter_max('2025-05-27T07:30+02')</pre> | 1154.01 | 1070.8 | 1115.77 | 1156.47 | 1168.38 | 1243.5 | 1281.37 | 1290.84 | 9 |
297+
| <pre>SELECT *<br>FROM connections<br>WHERE from_station_id = 'de:11000:900194006' -- S Schöneweide/Sterndamm (Berlin)<br>AND t_departure >= '2025-05-27T07:10+02' AND t_departure <= '2025-05-27T07:30+02'<br>AND date >= dates_filter_min('2025-05-27T07:10+02')<br>AND date <= dates_filter_max('2025-05-27T07:30+02')<br>AND from_stop_sequence_consec = 0</pre> | 482.23 | 454.29 | 466.55 | 467.45 | 475.64 | 555.32 | 571.05 | 574.98 | 21 |
298+
| <pre>SELECT *<br>FROM connections<br>WHERE from_stop_id = 'de:11000:900100001::4' -- S+U Friedrichstr. (Berlin)<br>AND t_departure >= '2025-05-27T07:10+02' AND t_departure <= '2025-05-27T07:30+02'<br>AND date >= dates_filter_min('2025-05-27T07:10+02')<br>AND date <= dates_filter_max('2025-05-27T07:30+02')</pre> | 885.14 | 835.29 | 869.24 | 875.76 | 909.79 | 922.32 | 923.64 | 923.97 | 12 |
299+
| <pre>SELECT *<br>FROM connections<br>WHERE trip_id = '262535123' -- route_id=17452_900 (M4)<br>AND date >= '2025-05-26' AND date <= '2025-06-01'</pre> | 19.31 | 15.83 | 18.02 | 18.99 | 20.27 | 22.76 | 24.78 | 27.96 | 519 |
300+
| <pre>SELECT count(*)<br>FROM connections<br>WHERE from_stop_id = 'de:11000:900100001::4' -- S+U Friedrichstr. (Berlin)</pre> | 341.42 | 263.96 | 340.65 | 346.83 | 350.72 | 355.91 | 358.76 | 359.65 | 30 |
301+
| <pre>SELECT count(*)<br>FROM connections<br>WHERE from_stop_id = 'definitely-non-existent'</pre> | 343.5 | 314.1 | 319.13 | 345.04 | 354.63 | 362.52 | 463.4 | 503.94 | 30 |
302+
| <pre>SELECT *<br>FROM connections<br>WHERE t_departure >= '2025-05-27T07:10+02' AND t_departure <= '2025-05-27T07:30+02'<br>AND date >= dates_filter_min('2025-05-27T07:10+02'::timestamp with time zone)<br>AND date <= dates_filter_max('2025-05-27T07:30+02'::timestamp with time zone)<br>ORDER BY t_departure<br>LIMIT 100</pre> | 1013055.35 | 986377.24 | 1026394.41 | 1009900.4 | 1026394.41 | 992028.36 | 1042228.66 | 1042888.42 | 3 |
303+
| <pre>SELECT *<br>FROM connections<br>WHERE t_departure >= '2025-05-27T07:10+02' AND t_departure <= '2025-05-27T07:30+02'<br>AND date >= '2025-05-25' AND date <= '2025-05-27'<br>ORDER BY t_departure<br>LIMIT 100</pre> | 16347.21 | 16250.36 | 16285.17 | 16319.98 | 16395.63 | 16456.16 | 16468.27 | 16471.29 | 3 |
304+
| <pre>SELECT *<br>FROM stats_by_route_date<br>WHERE route_id = '17452_900' -- M4<br>AND date >= '2025-05-26' AND date <= '2025-06-01'<br>AND is_effective = true</pre> | 4765.59 | 4704.49 | 4706.87 | 4709.25 | 4796.14 | 4865.64 | 4879.54 | 4883.02 | 3 |
307305

308306
## Related Projects
309307

0 commit comments

Comments
 (0)