Skip to content

Commit 318b3a5

Browse files
committed
bench: publish performance report 2026-03-25
1 parent 3fcb504 commit 318b3a5

File tree

2 files changed

+143
-46
lines changed

2 files changed

+143
-46
lines changed

docs/benchmarks/latest.md

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# SQL Parser Performance Report
22

3-
**Date:** 2026-03-24 21:48 UTC
3+
**Date:** 2026-03-25 00:53 UTC
44
**Host:** ci-big6-202511.vm
55
**CPU:** AMD Ryzen 9 5950X 16-Core Processor
66
**OS:** Linux 6.17.0-14-generic
77
**Compiler:** g++ (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0
8-
**Git:** main @ 7f53668
8+
**Git:** main @ 3fcb504
99
**Unit tests:** 430 passing
1010

1111
---
@@ -14,66 +14,66 @@
1414

1515
| Operation | Latency | Target | Status |
1616
|---|---|---|---|
17-
| BM_Classify_Insert | 192 ns | <500ns | MET |
18-
| BM_Classify_Update | 195 ns | <500ns | MET |
19-
| BM_Classify_Delete | 147 ns | <500ns | MET |
20-
| BM_Classify_Begin | 29.0 ns | <100ns | MET |
17+
| BM_Classify_Insert | 185 ns | <500ns | MET |
18+
| BM_Classify_Update | 191 ns | <500ns | MET |
19+
| BM_Classify_Delete | 143 ns | <500ns | MET |
20+
| BM_Classify_Begin | 28.9 ns | <100ns | MET |
2121
| BM_Set_Simple | 114 ns | <300ns | MET |
22-
| BM_Set_Names | 109 ns | <300ns | MET |
23-
| BM_Set_MultiVar | 240 ns | <300ns | MET |
24-
| BM_Set_FunctionRHS | 174 ns | <300ns | MET |
25-
| BM_Select_Simple | 186 ns | <500ns | MET |
26-
| BM_Select_MultiColumn | 355 ns | <500ns | MET |
27-
| BM_Select_Join | 426 ns | <2us | MET |
28-
| BM_Select_Complex | 1063 ns | <2us | MET |
29-
| BM_Select_MultiJoin | 1046 ns | <2us | MET |
30-
| BM_Emit_SetSimple | 116 ns | <500ns | MET |
31-
| BM_Emit_SelectSimple | 242 ns | <500ns | MET |
32-
| BM_ArenaReset | 3.80 ns | <10ns | MET |
33-
| BM_PgSQL_Select_Simple | 177 ns |||
34-
| BM_PgSQL_Set_Simple | 88.9 ns |||
35-
| BM_MT_Set_Simple/threads:1 | 113 ns |||
36-
| BM_MT_Set_Simple/threads:2 | 113 ns |||
37-
| BM_MT_Set_Simple/threads:4 | 115 ns |||
22+
| BM_Set_Names | 112 ns | <300ns | MET |
23+
| BM_Set_MultiVar | 241 ns | <300ns | MET |
24+
| BM_Set_FunctionRHS | 178 ns | <300ns | MET |
25+
| BM_Select_Simple | 176 ns | <500ns | MET |
26+
| BM_Select_MultiColumn | 361 ns | <500ns | MET |
27+
| BM_Select_Join | 457 ns | <2us | MET |
28+
| BM_Select_Complex | 1048 ns | <2us | MET |
29+
| BM_Select_MultiJoin | 1010 ns | <2us | MET |
30+
| BM_Emit_SetSimple | 118 ns | <500ns | MET |
31+
| BM_Emit_SelectSimple | 232 ns | <500ns | MET |
32+
| BM_ArenaReset | 3.70 ns | <10ns | MET |
33+
| BM_PgSQL_Select_Simple | 182 ns |||
34+
| BM_PgSQL_Set_Simple | 94.1 ns |||
35+
| BM_MT_Set_Simple/threads:1 | 115 ns |||
36+
| BM_MT_Set_Simple/threads:2 | 111 ns |||
37+
| BM_MT_Set_Simple/threads:4 | 119 ns |||
3838
| BM_MT_Set_Simple/threads:8 | 121 ns |||
39-
| BM_MT_Select_Simple/threads:1 | 174 ns |||
40-
| BM_MT_Select_Simple/threads:2 | 223 ns |||
41-
| BM_MT_Select_Simple/threads:4 | 198 ns |||
42-
| BM_MT_Select_Simple/threads:8 | 204 ns |||
43-
| BM_MT_Select_Complex/threads:1 | 1042 ns |||
44-
| BM_MT_Select_Complex/threads:2 | 1049 ns |||
45-
| BM_MT_Select_Complex/threads:4 | 1093 ns |||
46-
| BM_MT_Select_Complex/threads:8 | 1192 ns |||
47-
| BM_MT_Classify_Begin/threads:1 | 29.5 ns |||
48-
| BM_MT_Classify_Begin/threads:2 | 29.3 ns |||
49-
| BM_MT_Classify_Begin/threads:4 | 29.7 ns |||
50-
| BM_MT_Classify_Begin/threads:8 | 32.0 ns |||
51-
| BM_Percentile_Set_Simple | 915 ns |||
52-
| BM_Percentile_Select_Simple | 965 ns |||
53-
| BM_Percentile_Select_Complex | 1722 ns |||
54-
| BM_Percentile_Classify_Begin | 807 ns |||
39+
| BM_MT_Select_Simple/threads:1 | 185 ns |||
40+
| BM_MT_Select_Simple/threads:2 | 186 ns |||
41+
| BM_MT_Select_Simple/threads:4 | 187 ns |||
42+
| BM_MT_Select_Simple/threads:8 | 200 ns |||
43+
| BM_MT_Select_Complex/threads:1 | 1023 ns |||
44+
| BM_MT_Select_Complex/threads:2 | 1076 ns |||
45+
| BM_MT_Select_Complex/threads:4 | 1068 ns |||
46+
| BM_MT_Select_Complex/threads:8 | 1135 ns |||
47+
| BM_MT_Classify_Begin/threads:1 | 30.5 ns |||
48+
| BM_MT_Classify_Begin/threads:2 | 30.2 ns |||
49+
| BM_MT_Classify_Begin/threads:4 | 30.1 ns |||
50+
| BM_MT_Classify_Begin/threads:8 | 31.4 ns |||
51+
| BM_Percentile_Set_Simple | 892 ns |||
52+
| BM_Percentile_Select_Simple | 971 ns |||
53+
| BM_Percentile_Select_Complex | 1686 ns |||
54+
| BM_Percentile_Classify_Begin | 822 ns |||
5555

5656
---
5757

5858
## Multi-Threaded Scaling (per-thread latency)
5959

6060
| Operation | 1 thread | 2 threads | 4 threads | 8 threads |
6161
|---|---|---|---|---|
62-
| BM_MT_Set_Simple | 113ns | 113ns | 115ns | 121ns |
63-
| BM_MT_Select_Simple | 174ns | 223ns | 198ns | 204ns |
64-
| BM_MT_Select_Complex | 1042ns | 1049ns | 1093ns | 1192ns |
65-
| BM_MT_Classify_Begin | 29.5ns | 29.3ns | 29.7ns | 32.0ns |
62+
| BM_MT_Set_Simple | 115ns | 111ns | 119ns | 121ns |
63+
| BM_MT_Select_Simple | 185ns | 186ns | 187ns | 200ns |
64+
| BM_MT_Select_Complex | 1023ns | 1076ns | 1068ns | 1135ns |
65+
| BM_MT_Classify_Begin | 30.5ns | 30.2ns | 30.1ns | 31.4ns |
6666

6767
---
6868

6969
## Percentile Latency
7070

7171
| Operation | avg | p50 | p95 | p99 | min | max |
7272
|---|---|---|---|---|---|---|
73-
| BM_Percentile_Set_Simple | 948.284ns | 922ns | 1.052kns | 1.553kns | 871ns | 39.142kns |
74-
| BM_Percentile_Select_Simple | 1.00773kns | 992ns | 1.041kns | 1.362kns | 941ns | 62.395kns |
75-
| BM_Percentile_Select_Complex | 1.79424kns | 1.763kns | 1.803kns | 2.665kns | 1.723kns | 54.14kns |
76-
| BM_Percentile_Classify_Begin | 831.536ns | 821ns | 892ns | 1.082kns | 781ns | 60.311kns |
73+
| BM_Percentile_Set_Simple | 923.356ns | 902ns | 1.012kns | 1.252kns | 871ns | 47.558kns |
74+
| BM_Percentile_Select_Simple | 1.01098kns | 992ns | 1.092kns | 1.382kns | 941ns | 61.614kns |
75+
| BM_Percentile_Select_Complex | 1.75203kns | 1.713kns | 1.823kns | 2.635kns | 1.673kns | 217.482kns |
76+
| BM_Percentile_Classify_Begin | 848.873ns | 832ns | 891ns | 1.272kns | 791ns | 229.433kns |
7777

7878
---
7979

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# SQL Parser Performance Report
2+
3+
**Date:** 2026-03-25 00:53 UTC
4+
**Host:** ci-big6-202511.vm
5+
**CPU:** AMD Ryzen 9 5950X 16-Core Processor
6+
**OS:** Linux 6.17.0-14-generic
7+
**Compiler:** g++ (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0
8+
**Git:** main @ 3fcb504
9+
**Unit tests:** 430 passing
10+
11+
---
12+
13+
## Benchmark Results (Release -O3)
14+
15+
| Operation | Latency | Target | Status |
16+
|---|---|---|---|
17+
| BM_Classify_Insert | 185 ns | <500ns | MET |
18+
| BM_Classify_Update | 191 ns | <500ns | MET |
19+
| BM_Classify_Delete | 143 ns | <500ns | MET |
20+
| BM_Classify_Begin | 28.9 ns | <100ns | MET |
21+
| BM_Set_Simple | 114 ns | <300ns | MET |
22+
| BM_Set_Names | 112 ns | <300ns | MET |
23+
| BM_Set_MultiVar | 241 ns | <300ns | MET |
24+
| BM_Set_FunctionRHS | 178 ns | <300ns | MET |
25+
| BM_Select_Simple | 176 ns | <500ns | MET |
26+
| BM_Select_MultiColumn | 361 ns | <500ns | MET |
27+
| BM_Select_Join | 457 ns | <2us | MET |
28+
| BM_Select_Complex | 1048 ns | <2us | MET |
29+
| BM_Select_MultiJoin | 1010 ns | <2us | MET |
30+
| BM_Emit_SetSimple | 118 ns | <500ns | MET |
31+
| BM_Emit_SelectSimple | 232 ns | <500ns | MET |
32+
| BM_ArenaReset | 3.70 ns | <10ns | MET |
33+
| BM_PgSQL_Select_Simple | 182 ns |||
34+
| BM_PgSQL_Set_Simple | 94.1 ns |||
35+
| BM_MT_Set_Simple/threads:1 | 115 ns |||
36+
| BM_MT_Set_Simple/threads:2 | 111 ns |||
37+
| BM_MT_Set_Simple/threads:4 | 119 ns |||
38+
| BM_MT_Set_Simple/threads:8 | 121 ns |||
39+
| BM_MT_Select_Simple/threads:1 | 185 ns |||
40+
| BM_MT_Select_Simple/threads:2 | 186 ns |||
41+
| BM_MT_Select_Simple/threads:4 | 187 ns |||
42+
| BM_MT_Select_Simple/threads:8 | 200 ns |||
43+
| BM_MT_Select_Complex/threads:1 | 1023 ns |||
44+
| BM_MT_Select_Complex/threads:2 | 1076 ns |||
45+
| BM_MT_Select_Complex/threads:4 | 1068 ns |||
46+
| BM_MT_Select_Complex/threads:8 | 1135 ns |||
47+
| BM_MT_Classify_Begin/threads:1 | 30.5 ns |||
48+
| BM_MT_Classify_Begin/threads:2 | 30.2 ns |||
49+
| BM_MT_Classify_Begin/threads:4 | 30.1 ns |||
50+
| BM_MT_Classify_Begin/threads:8 | 31.4 ns |||
51+
| BM_Percentile_Set_Simple | 892 ns |||
52+
| BM_Percentile_Select_Simple | 971 ns |||
53+
| BM_Percentile_Select_Complex | 1686 ns |||
54+
| BM_Percentile_Classify_Begin | 822 ns |||
55+
56+
---
57+
58+
## Multi-Threaded Scaling (per-thread latency)
59+
60+
| Operation | 1 thread | 2 threads | 4 threads | 8 threads |
61+
|---|---|---|---|---|
62+
| BM_MT_Set_Simple | 115ns | 111ns | 119ns | 121ns |
63+
| BM_MT_Select_Simple | 185ns | 186ns | 187ns | 200ns |
64+
| BM_MT_Select_Complex | 1023ns | 1076ns | 1068ns | 1135ns |
65+
| BM_MT_Classify_Begin | 30.5ns | 30.2ns | 30.1ns | 31.4ns |
66+
67+
---
68+
69+
## Percentile Latency
70+
71+
| Operation | avg | p50 | p95 | p99 | min | max |
72+
|---|---|---|---|---|---|---|
73+
| BM_Percentile_Set_Simple | 923.356ns | 902ns | 1.012kns | 1.252kns | 871ns | 47.558kns |
74+
| BM_Percentile_Select_Simple | 1.01098kns | 992ns | 1.092kns | 1.382kns | 941ns | 61.614kns |
75+
| BM_Percentile_Select_Complex | 1.75203kns | 1.713kns | 1.823kns | 2.635kns | 1.673kns | 217.482kns |
76+
| BM_Percentile_Classify_Begin | 848.873ns | 832ns | 891ns | 1.272kns | 791ns | 229.433kns |
77+
78+
---
79+
80+
## Corpus Test Results
81+
82+
| Corpus | Dialect | Queries | OK | PARTIAL | ERROR |
83+
|---|---|---|---|---|---|
84+
| PostgreSQL regression | pgsql | 55553 | 55342 (99.6202%) | 204 | 7 |
85+
| MySQL MTR | mysql | 2270 | 2268 (99.9119%) | 2 | 0 |
86+
| CockroachDB | pgsql | 17429 | 16570 (95.0714%) | 859 | 0 |
87+
| SQLGlot | mysql | 1450 | 1424 (98.2069%) | 13 | 13 |
88+
| sqlparser-rs MySQL | mysql | 424 | 424 (100%) | 0 | 0 |
89+
| sqlparser-rs PostgreSQL | pgsql | 471 | 468 (99.3631%) | 3 | 0 |
90+
| sqlparser-rs Common | mysql | 1536 | 1528 (99.4792%) | 8 | 0 |
91+
| Vitess | mysql | 2291 | 2286 (99.7818%) | 5 | 0 |
92+
| TiDB | mysql | 5043 | 5031 (99.762%) | 12 | 0 |
93+
| **TOTAL** | | **86467** | **85341** | **1106** | **20** |
94+
95+
---
96+
97+
*Generated by `scripts/run_benchmarks.sh`*

0 commit comments

Comments
 (0)