Skip to content

Commit f7d960e

Browse files
committed
perf: add query-string module to benchmarks
1 parent ff16295 commit f7d960e

4 files changed

Lines changed: 46 additions & 3 deletions

File tree

lib/parse.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@ function parse(input) {
4242
}
4343
} else if (Array.isArray(root[key])) {
4444
root[key].push(currentValue);
45-
} else {
45+
} else if (k === currentKeyLength - 1) {
4646
root[key] = [root[key], currentValue];
47+
} else {
48+
Object.assign(root[key], { [key]: {} })
4749
}
4850
}
4951

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,17 @@
1111
"coverage": "vitest run --coverage",
1212
"benchmark": "node test/benchmark.mjs"
1313
},
14-
"keywords": ["querystring", "qs", "parser"],
14+
"keywords": [
15+
"querystring",
16+
"qs",
17+
"parser"
18+
],
1519
"author": "Yagiz Nizipli <yagiz@nizipli.com>",
1620
"license": "MIT",
1721
"devDependencies": {
1822
"cronometro": "^1.1.2",
1923
"qs": "^6.11.0",
24+
"query-string": "^7.1.1",
2025
"rome": "0.8.0-next.ff4153b",
2126
"url-state-machine": "^0.5.1",
2227
"vitest": "^0.22.1"

pnpm-lock.yaml

Lines changed: 32 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/benchmark.mjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import URLStateMachine from "url-state-machine";
33
import qs from "qs";
44
import fastQueryString from "../lib/index.js";
55
import native from "node:querystring";
6+
import queryString from "query-string";
67

78
await benchmark(
89
{
@@ -15,9 +16,12 @@ await benchmark(
1516
"fast-querystring"() {
1617
return fastQueryString.parse("hello=world&foo=bar");
1718
},
18-
"native-querystring"() {
19+
"node:querystring"() {
1920
return native.parse("hello=world&foo=bar");
2021
},
22+
"query-string"() {
23+
return queryString.parse("hello=world&foo=bar");
24+
},
2125
},
2226
{ warmup: true, print: { compare: true, compareMode: "previous" } },
2327
);

0 commit comments

Comments
 (0)