Skip to content

Commit 30fb2d9

Browse files
authored
Merge pull request #131 from coregx/docs/benchmark-v0126
docs: update benchmark results to v0.12.6
2 parents 90c3f64 + ee3ca17 commit 30fb2d9

2 files changed

Lines changed: 38 additions & 25 deletions

File tree

README.md

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,18 +60,20 @@ func main() {
6060

6161
## Performance
6262

63-
Cross-language benchmarks on 6MB input ([source](https://github.com/kolkov/regex-bench)):
64-
65-
| Pattern | Go stdlib | coregex | vs stdlib |
66-
|---------|-----------|---------|-----------|
67-
| Literal alternation | 600 ms | 5 ms | **113x** |
68-
| Inner `.*keyword.*` | 453 ms | 2 ms | **285x** |
69-
| Suffix `.*\.txt` | 350 ms | <1 ms | **350x+** |
70-
| Multiline `(?m)^/.*\.php` | 103 ms | <1 ms | **100x+** |
71-
| Email validation | 389 ms | <1 ms | **389x+** |
72-
| URL extraction | 350 ms | <1 ms | **350x+** |
73-
| IP address | 825 ms | 10 ms | **82x** |
74-
| Char class `[\w]+` | 670 ms | 112 ms | **6x** |
63+
Cross-language benchmarks on 6MB input, AMD EPYC ([source](https://github.com/kolkov/regex-bench)):
64+
65+
| Pattern | Go stdlib | coregex | Rust regex | vs stdlib | vs Rust |
66+
|---------|-----------|---------|------------|-----------|---------|
67+
| Literal alternation | 483 ms | 4.6 ms | 0.6 ms | **104x** | 7.8x slower |
68+
| Multi-literal | 1401 ms | 12.7 ms | 4.6 ms | **110x** | 2.7x slower |
69+
| Inner `.*keyword.*` | 232 ms | 0.25 ms | 0.28 ms | **926x** | **1.1x faster** |
70+
| Suffix `.*\.txt` | 234 ms | 0.88 ms | 1.07 ms | **266x** | **1.2x faster** |
71+
| Multiline `(?m)^/.*\.php` | 103 ms | 0.65 ms | 0.66 ms | **159x** | **~parity** |
72+
| Email validation | 261 ms | 0.58 ms | 0.21 ms | **449x** | 2.7x slower |
73+
| URL extraction | 258 ms | 0.63 ms | 0.34 ms | **409x** | 1.8x slower |
74+
| IP address | 495 ms | 2.2 ms | 12.0 ms | **230x** | **5.5x faster** |
75+
| Char class `[\w]+` | 525 ms | 40.7 ms | 50.3 ms | **12x** | **1.2x faster** |
76+
| Word repeat `(\w{2,8})+` | 659 ms | 187 ms | 48.3 ms | **3.5x** | 3.8x slower |
7577

7678
**Where coregex excels:**
7779
- Multiline patterns (`(?m)^/.*\.php`) — near Rust parity, 100x+ vs stdlib

ROADMAP.md

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -216,24 +216,35 @@ v1.0.0 STABLE → Production release with API stability guarantee
216216

217217
## Performance Targets
218218

219-
### Current (v0.8.20) ✅ ACHIEVED
220-
221-
| Pattern Type | stdlib | coregex | Speedup | Status |
222-
|--------------|--------|---------|---------|--------|
223-
| Inner literal `.*keyword.*` | 12.6ms | 4µs | **3154x** ||
224-
| Suffix `.*\.txt` | 1.3ms | 855ns | **1549x** ||
225-
| Suffix alternation `.*\.(txt\|log\|md)` 1KB | 15.5µs | 454ns | **34x** ||
226-
| Suffix alternation `.*\.(txt\|log\|md)` 1MB | 57ms | 147µs | **385x** ||
227-
| FindAll `.*@suffix` | 316ms | 3.6ms | **87x** ||
228-
| Alternation `(foo\|bar\|...)` | 9.7µs | 40ns | **242x** ||
229-
| Case-insensitive 32KB | 1.2ms | 4.6µs | **263x** ||
230-
| Character class `\d+` | 6.7µs | 1.5µs | **4.5x** ||
231-
| Email patterns | 22µs | 2µs | **11x** ||
219+
### Current (v0.12.6) — AMD EPYC, 6MB input ✅ ACHIEVED
220+
221+
Cross-language benchmarks via [regex-bench](https://github.com/kolkov/regex-bench):
222+
223+
| Pattern | Go stdlib | coregex | Rust regex | vs stdlib | vs Rust |
224+
|---------|-----------|---------|------------|-----------|---------|
225+
| Literal alternation | 483 ms | 4.6 ms | 0.6 ms | **104x** | 7.8x slower |
226+
| Multi-literal | 1401 ms | 12.7 ms | 4.6 ms | **110x** | 2.7x slower |
227+
| Inner `.*keyword.*` | 232 ms | 0.25 ms | 0.28 ms | **926x** | **1.1x faster** |
228+
| Suffix `.*\.txt` | 234 ms | 0.88 ms | 1.07 ms | **266x** | **1.2x faster** |
229+
| Multiline `(?m)^/.*\.php` | 103 ms | 0.65 ms | 0.66 ms | **159x** | **~parity** |
230+
| Email validation | 261 ms | 0.58 ms | 0.21 ms | **449x** | 2.7x slower |
231+
| URL extraction | 258 ms | 0.63 ms | 0.34 ms | **409x** | 1.8x slower |
232+
| IP address | 495 ms | 2.2 ms | 12.0 ms | **230x** | **5.5x faster** |
233+
| Char class `[\w]+` | 525 ms | 40.7 ms | 50.3 ms | **12x** | **1.2x faster** |
234+
| Alpha+digit | 261 ms | 25.7 ms | 11.9 ms | **10x** | 2.1x slower |
235+
| Word+digit | 271 ms | 26.2 ms | 12.0 ms | **10x** | 2.1x slower |
236+
| Word repeat `(\w{2,8})+` | 659 ms | 187 ms | 48.3 ms | **3.5x** | 3.8x slower |
237+
| HTTP methods | 106 ms | 0.90 ms | 0.70 ms | **117x** | 1.2x slower |
238+
| Anchored PHP | 0.00 ms | 0.01 ms | 0.01 ms | ~1x | ~parity |
239+
| Multiline PHP | 103 ms | 0.65 ms | 0.66 ms | **159x** | **~parity** |
240+
241+
**5 patterns faster than Rust**: inner_literal, suffix, IP, char_class, multiline_php.
232242

233243
### Remaining for v1.0.0
234244

235245
| Feature | Status | Priority |
236246
|---------|--------|----------|
247+
| Close Teddy gap vs Rust (7.8x) | Blocked on Go 1.26 archsimd | High |
237248
| ARM NEON SIMD | Planned | Medium |
238249
| Look-around assertions | Planned | Medium |
239250
| API stability guarantee | Required | High |

0 commit comments

Comments
 (0)