fast-path-parse
v2.2.1
Published
Fastest route path-to-params parser
Downloads
19
Readme
fast-path-parse
Fastest route path-to-params parser.
Optimized where it's possible.
Up-to 10x faster than fastest counterpart (aot
imports)
Features
- Zero dependency
- Zero config
- Fastest parser
Usage
ESM
import parse from 'fast-path-parse/runtime/parse';
// or
import parse from 'fast-path-parse/aot/parse';
// Run this ahead-of-time, not at runtime or hot path
const parsePath = parse('/user/:foo');
// Run this at hot path
parsePath('/user/john');
CJS
const parse = require('fast-path-parse/runtime/parse');
// or
const parse = require('fast-path-parse/aot/parse');
// Run this ahead-of-time, not at runtime or hot path
const parsePath = parse('/user/:foo');
// Run this at hot path
parsePath('/user/john');
Benchmark
It is on my machine, on your machine results may vary. See benchmark folder
3-level parameter
| Runtime | Path | Methods | fast-path
| fast-path-compiled
| path-to-regexp
| path-to-tree
|
| ------- | ---------------------- | ------- | ----------- | -------------------- | ---------------- | -------------- |
| Node.js | /user/:id/edit/:page
| match
| 16.5M ops
| 24M ops
| 3M ops
| 2M ops
|
| Bun | /user/:id/edit/:page
| match
| 15M ops
| 15M ops
| 1M ops
| 2.5M
|
| Node.js | /user/:id/edit/:page
| parse
| 13.5M ops
| 28M ops
| 3M ops
| 2M ops
|
| Bun | /user/:id/edit/:page
| parse
| 17M ops
| 23M ops
| 1M ops
| 2.5M
|
Supported paths
Information about badges
- ✅ – Done
- ✍️ – In progress
- 🕖 – Planned but not started yet
- ⚠️ – Requires high amount of time
- ?– Not tested but could work
- ❌ – Probably does not happen
| Name | Status | Priority | Performance |
| -------------------- | ------ | -------- | ----------- |
| /foo
| ✅ | 0 | 100% |
| /foo/bar
| ✅ | 0 | 100% |
| /foo/bar-{one,two}
| ⚠️ | 1 | 60% |
| /foo/bar-[one,two]
| ⚠️ | 1 | 60% |
| /foo/bar_*
| ⚠️ | 2 | 80% |
| /foo/bar-*
| ⚠️ | 2 | 80% |
| /foo/bar*
| ⚠️ | 2 | 80% |
| /foo/bar/<id>
| ✅ | 3 | 90% |
| /foo/task/:bar
| ✅ | 4 | 80% |
| /foo/:task/:bar
| ✅ | 4 | 70% |
| /foo/:bar
| ✅ | 5 | 90% |
| /foo/*
| ✅ | 6 | 90% |
| /foo/(.*)
| ✅ | 6 | 90% |
License
MIT