hckhanh
fast-url
BlogDocsChangelog

Optimize `path`, `join`, and `removeNullOrUndef` functions for performance and clarity, introduce regex pre-compilation, and improve path parameter validation.

#82Merged
Comparing
optimize
(
355d420
) with
main
(
5a1fe77
)
CodSpeed Performance Gauge
+45%
Improvements
19
Untouched
139
Skipped
22

Benchmarks

Skipped (22)

Uses exactly one separator even if the first part ends with it and the second part starts with it
benchmark/join.bench.ts::join benchmarks
Skipped
21.8 µs*
Substitutes all params present in the object passed
benchmark/subst.bench.ts::subst benchmarks
Skipped
97.4 µs*
Can handle multiple params
benchmark/query.bench.ts::query benchmarks
Skipped
88 µs*
Can handle complex URL's
benchmark/urlcat.bench.ts::urlcat benchmarks
Skipped
201.5 µs*
Large query string (15 params)
benchmark/urlcat.bench.ts::urlcat benchmarks::Complex cases
Skipped
150.8 µs*
Deep path with 5 parameters
benchmark/urlcat.bench.ts::urlcat benchmarks::Complex cases
Skipped
118.2 µs*
Base template only (no path)
benchmark/urlcat.bench.ts::urlcat benchmarks::Edge cases
Skipped
98.1 µs*
Boolean and number params
benchmark/urlcat.bench.ts::urlcat benchmarks::Edge cases
Skipped
113.3 µs*
Complex URL with many params (original test)
benchmark/urlcat.bench.ts::urlcat benchmarks::Complex cases
Skipped
182.3 µs*
Array in query params
benchmark/urlcat.bench.ts::urlcat benchmarks::Edge cases
Skipped
84.7 µs*
Multiple query params (5 params)
benchmark/urlcat.bench.ts::urlcat benchmarks::Medium complexity
Skipped
111.1 µs*
Path params with special characters
benchmark/urlcat.bench.ts::urlcat benchmarks::Medium complexity
Skipped
112.8 µs*
Empty params object
benchmark/urlcat.bench.ts::urlcat benchmarks::Edge cases
Skipped
26.7 µs*
Two path params + two query params
benchmark/urlcat.bench.ts::urlcat benchmarks::Medium complexity
Skipped
112.3 µs*
Base URL with trailing slash + path
benchmark/urlcat.bench.ts::urlcat benchmarks::Simple cases
Skipped
31 µs*
REST API endpoint with pagination
benchmark/urlcat.bench.ts::urlcat benchmarks::Real-world patterns
Skipped
85.9 µs*
Concatenate base URL and path only
benchmark/urlcat.bench.ts::urlcat benchmarks::Simple cases
Skipped
82.4 µs*
Resource with ID and nested resource
benchmark/urlcat.bench.ts::urlcat benchmarks::Real-world patterns
Skipped
102.1 µs*
Single query parameter
benchmark/urlcat.bench.ts::urlcat benchmarks::Simple cases
Skipped
92.6 µs*
Search endpoint with filters
benchmark/urlcat.bench.ts::urlcat benchmarks::Real-world patterns
Skipped
96 µs*
Single path parameter
benchmark/urlcat.bench.ts::urlcat benchmarks::Simple cases
Skipped
85.1 µs*
URL with port number
benchmark/urlcat.bench.ts::urlcat benchmarks::Real-world patterns
Skipped
98.9 µs*

Improved

Large query string (15 params)
benchmark/urlcat.bench.ts::createUrl benchmarks::Complex cases
CodSpeed Performance Gauge
+45%
151.5 µs104.8 µs
Large query string (15 params) with some path params
benchmark/urlcat.bench.ts::createUrl benchmarks::Complex cases
CodSpeed Performance Gauge
+38%
166.6 µs120.3 µs
Search endpoint with filters
benchmark/urlcat.bench.ts::createUrl benchmarks::Real-world patterns
CodSpeed Performance Gauge
+32%
96.1 µs72.6 µs
Complex URL with many params (original test)
benchmark/urlcat.bench.ts::createUrl benchmarks::Complex cases
CodSpeed Performance Gauge
+29%
182.2 µs141.3 µs
Multiple query params (5 params)
benchmark/urlcat.bench.ts::createUrl benchmarks::Medium complexity
CodSpeed Performance Gauge
+29%
111.2 µs86.4 µs
Single query parameter
benchmark/urlcat.bench.ts::createUrl benchmarks::Simple cases
CodSpeed Performance Gauge
+28%
92.9 µs72.5 µs
Array in query params
benchmark/urlcat.bench.ts::createUrl benchmarks::Edge cases
CodSpeed Performance Gauge
+25%
84.7 µs67.5 µs
Base template only (no path)
benchmark/urlcat.bench.ts::createUrl benchmarks::Edge cases
CodSpeed Performance Gauge
+22%
98.2 µs80.5 µs
Base URL with trailing slash + path
benchmark/urlcat.bench.ts::createUrl benchmarks::Simple cases
CodSpeed Performance Gauge
+22%
31 µs25.4 µs
URL with port number
benchmark/urlcat.bench.ts::createUrl benchmarks::Real-world patterns
CodSpeed Performance Gauge
+21%
99.8 µs82.3 µs
Boolean and number params
benchmark/urlcat.bench.ts::createUrl benchmarks::Edge cases
CodSpeed Performance Gauge
+21%
113.8 µs94.4 µs
Resource with ID and nested resource
benchmark/urlcat.bench.ts::createUrl benchmarks::Real-world patterns
CodSpeed Performance Gauge
+20%
101.8 µs84.8 µs
Deep path with 5 parameters
benchmark/urlcat.bench.ts::createUrl benchmarks::Complex cases
CodSpeed Performance Gauge
+17%
118.4 µs100.8 µs
Path params with special characters
benchmark/urlcat.bench.ts::createUrl benchmarks::Medium complexity
CodSpeed Performance Gauge
+17%
113.1 µs96.4 µs
Join URL with trailing slash
benchmark/join.bench.ts::join benchmarks::URL path separators
CodSpeed Performance Gauge
+16%
16.8 µs14.4 µs
REST API endpoint with pagination
benchmark/urlcat.bench.ts::createUrl benchmarks::Real-world patterns
CodSpeed Performance Gauge
+15%
85.7 µs74.8 µs
Concatenate base URL and path only
benchmark/urlcat.bench.ts::createUrl benchmarks::Simple cases
CodSpeed Performance Gauge
+14%
76.6 µs67.1 µs
Two path params + two query params
benchmark/urlcat.bench.ts::createUrl benchmarks::Medium complexity
CodSpeed Performance Gauge
+12%
112.6 µs100.6 µs
Join with separator at end of first part
benchmark/join.bench.ts::join benchmarks::Basic joins
CodSpeed Performance Gauge
+11%
17 µs15.4 µs

Passed

Multiple separators in content
benchmark/join.bench.ts::join benchmarks::Edge cases
CodSpeed Performance Gauge
+10%
14.8 µs13.5 µs
Empty params object
benchmark/urlcat.bench.ts::createUrl benchmarks::Edge cases
CodSpeed Performance Gauge
+9%
26.5 µs24.2 µs
Both parts empty
benchmark/join.bench.ts::join benchmarks::Edge cases
CodSpeed Performance Gauge
+9%
13 µs11.9 µs
Empty template
benchmark/subst.bench.ts::subst benchmarks::Parameter count scaling
CodSpeed Performance Gauge
+9%
62.3 µs57.1 µs
Join with separator at start of second part
benchmark/join.bench.ts::join benchmarks::Basic joins
CodSpeed Performance Gauge
+8%
16.7 µs15.5 µs
Join URL parts with slash
benchmark/join.bench.ts::join benchmarks::URL path separators
CodSpeed Performance Gauge
+7%
16.3 µs15.2 µs
Single path parameter
benchmark/urlcat.bench.ts::createUrl benchmarks::Simple cases
CodSpeed Performance Gauge
+7%
84.9 µs79 µs
Second part empty
benchmark/join.bench.ts::join benchmarks::Edge cases
CodSpeed Performance Gauge
+7%
14.4 µs13.5 µs
Both parts have separator at boundary
benchmark/join.bench.ts::join benchmarks::Basic joins
CodSpeed Performance Gauge
+6%
17.3 µs16.3 µs
Join deep URL paths
benchmark/join.bench.ts::join benchmarks::URL path separators
CodSpeed Performance Gauge
+6%
16.2 µs15.3 µs
Long strings with separator
benchmark/join.bench.ts::join benchmarks::Edge cases
CodSpeed Performance Gauge
+6%
14.8 µs13.9 µs
Join URL parts both with slash
benchmark/join.bench.ts::join benchmarks::URL path separators
CodSpeed Performance Gauge
+6%
16.4 µs15.5 µs
First part empty
benchmark/join.bench.ts::join benchmarks::Edge cases
CodSpeed Performance Gauge
+6%
14.2 µs13.4 µs
Join empty first part with query
benchmark/join.bench.ts::join benchmarks::Query string separators
CodSpeed Performance Gauge
+6%
14.4 µs13.6 µs
Join with leading ampersand
benchmark/join.bench.ts::join benchmarks::Query string separators
CodSpeed Performance Gauge
+5%
21.3 µs20.2 µs
Join query parts with ampersand
benchmark/join.bench.ts::join benchmarks::Query string separators
CodSpeed Performance Gauge
+5%
15.1 µs14.4 µs
Ampersand separator
benchmark/join.bench.ts::join benchmarks::Different separators
CodSpeed Performance Gauge
+4%
13.9 µs13.5 µs
Join URL path with query string
benchmark/join.bench.ts::join benchmarks::Query string separators
CodSpeed Performance Gauge
+3%
13.7 µs13.3 µs
Comma separator
benchmark/join.bench.ts::join benchmarks::Different separators
CodSpeed Performance Gauge
+3%
13.9 µs13.4 µs
Slash separator
benchmark/join.bench.ts::join benchmarks::Different separators
CodSpeed Performance Gauge
+3%
13.9 µs13.5 µs
Question mark separator
benchmark/join.bench.ts::join benchmarks::Different separators
CodSpeed Performance Gauge
+3%
14 µs13.6 µs
Pipe separator
benchmark/join.bench.ts::join benchmarks::Different separators
CodSpeed Performance Gauge
+3%
13.9 µs13.5 µs
Safe special characters (no encoding needed)
benchmark/querystring.bench.ts::encodeString benchmarks::Character type variations
CodSpeed Performance Gauge
0%
13.7 µs13.7 µs
Search query with special chars
benchmark/querystring.bench.ts::encodeString benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
14.9 µs14.8 µs
Parameter at end
benchmark/subst.bench.ts::subst benchmarks::Template patterns
CodSpeed Performance Gauge
0%
64.8 µs64.5 µs
File path with spaces
benchmark/querystring.bench.ts::encodeString benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
15.3 µs15.2 µs
Mixed safe and unsafe (50% encoding)
benchmark/querystring.bench.ts::encodeString benchmarks::Character type variations
CodSpeed Performance Gauge
0%
15.7 µs15.7 µs
SQL-like query
benchmark/querystring.bench.ts::encodeString benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
15.9 µs15.9 µs
Unicode in values
benchmark/subst.bench.ts::subst benchmarks::Special characters
CodSpeed Performance Gauge
0%
63.1 µs62.9 µs
Long parameter values
benchmark/subst.bench.ts::subst benchmarks::Special characters
CodSpeed Performance Gauge
0%
64.3 µs64 µs
Short parameter names
benchmark/subst.bench.ts::subst benchmarks::Parameter name patterns
CodSpeed Performance Gauge
0%
66.1 µs65.8 µs
Short ASCII string (10 chars)
benchmark/querystring.bench.ts::encodeString benchmarks::String length scaling
CodSpeed Performance Gauge
0%
18.2 µs18.2 µs
Parameters with static segments
benchmark/subst.bench.ts::subst benchmarks::Template patterns
CodSpeed Performance Gauge
0%
67.3 µs67.1 µs
Two parameters
benchmark/subst.bench.ts::subst benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
70.5 µs70.3 µs
Email address
benchmark/querystring.bench.ts::encodeString benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
20 µs19.9 µs
Parameter at beginning
benchmark/subst.bench.ts::subst benchmarks::Template patterns
CodSpeed Performance Gauge
0%
63.5 µs63.3 µs
Values with spaces
benchmark/subst.bench.ts::subst benchmarks::Special characters
CodSpeed Performance Gauge
0%
65.3 µs65.1 µs
Consecutive parameters
benchmark/subst.bench.ts::subst benchmarks::Template patterns
CodSpeed Performance Gauge
0%
68.3 µs68.1 µs
Date-based path
benchmark/subst.bench.ts::subst benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
76.8 µs76.6 µs
Simple single-segment template
benchmark/subst.bench.ts::subst benchmarks::Template complexity
CodSpeed Performance Gauge
0%
62.6 µs62.5 µs
Long ASCII string (200 chars)
benchmark/querystring.bench.ts::encodeString benchmarks::String length scaling
CodSpeed Performance Gauge
0%
22.6 µs22.6 µs
REST API resource path
benchmark/subst.bench.ts::subst benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
63.2 µs63 µs
Boolean values
benchmark/subst.bench.ts::subst benchmarks::Different value types
CodSpeed Performance Gauge
0%
62.9 µs62.7 µs
Long template with many segments
benchmark/subst.bench.ts::subst benchmarks::Template patterns
CodSpeed Performance Gauge
0%
73.6 µs73.4 µs
Medium complexity template
benchmark/subst.bench.ts::subst benchmarks::Template complexity
CodSpeed Performance Gauge
0%
67.9 µs67.7 µs
JSON-like string
benchmark/querystring.bench.ts::encodeString benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
24.2 µs24.1 µs
Nested resource path
benchmark/subst.bench.ts::subst benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
66.9 µs66.7 µs
Deep nesting with IDs
benchmark/subst.bench.ts::subst benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
68.6 µs68.4 µs
Three parameters (original)
benchmark/subst.bench.ts::subst benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
79 µs78.8 µs
URL path
benchmark/querystring.bench.ts::encodeString benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
25 µs24.9 µs
Very deep template (8 levels)
benchmark/subst.bench.ts::subst benchmarks::Template complexity
CodSpeed Performance Gauge
0%
83.4 µs83.2 µs
Mixed ASCII and Unicode
benchmark/querystring.bench.ts::encodeString benchmarks::Unicode and multi-byte characters
CodSpeed Performance Gauge
0%
25.8 µs25.8 µs
Underscore parameter names
benchmark/subst.bench.ts::subst benchmarks::Parameter name patterns
CodSpeed Performance Gauge
0%
67.9 µs67.8 µs
Versioned API endpoint
benchmark/subst.bench.ts::subst benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
69.3 µs69.2 µs
Five parameters
benchmark/subst.bench.ts::subst benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
76.3 µs76.1 µs
All spaces (maximum encoding)
benchmark/querystring.bench.ts::encodeString benchmarks::Character type variations
CodSpeed Performance Gauge
0%
13.9 µs13.9 µs
Pure alphanumeric (no encoding needed)
benchmark/querystring.bench.ts::encodeString benchmarks::Character type variations
CodSpeed Performance Gauge
0%
14.1 µs14 µs
Multi-select filter params
benchmark/querystring.bench.ts::stringify benchmarks::Real-world use cases
CodSpeed Performance Gauge
0%
59.6 µs59.5 µs
String values
benchmark/subst.bench.ts::subst benchmarks::Different value types
CodSpeed Performance Gauge
0%
69.9 µs69.8 µs
Medium values (20 chars each)
benchmark/querystring.bench.ts::stringify benchmarks::Value length scaling
CodSpeed Performance Gauge
0%
59.6 µs59.5 µs
Ten parameters
benchmark/subst.bench.ts::subst benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
95.4 µs95.2 µs
Number values
benchmark/subst.bench.ts::subst benchmarks::Different value types
CodSpeed Performance Gauge
0%
69.8 µs69.6 µs
Long parameter names
benchmark/subst.bench.ts::subst benchmarks::Parameter name patterns
CodSpeed Performance Gauge
0%
68.7 µs68.6 µs
Complex multi-level template
benchmark/subst.bench.ts::subst benchmarks::Template complexity
CodSpeed Performance Gauge
0%
75 µs74.8 µs
Various language scripts
benchmark/querystring.bench.ts::encodeString benchmarks::Unicode and multi-byte characters
CodSpeed Performance Gauge
0%
36.3 µs36.2 µs
CamelCase parameter names
benchmark/subst.bench.ts::subst benchmarks::Parameter name patterns
CodSpeed Performance Gauge
0%
69.5 µs69.4 µs
4-byte UTF-8 characters (emojis)
benchmark/querystring.bench.ts::encodeString benchmarks::Unicode and multi-byte characters
CodSpeed Performance Gauge
0%
22.3 µs22.2 µs
3-byte UTF-8 characters (CJK)
benchmark/querystring.bench.ts::encodeString benchmarks::Unicode and multi-byte characters
CodSpeed Performance Gauge
0%
23.9 µs23.8 µs
Values with special chars
benchmark/subst.bench.ts::subst benchmarks::Special characters
CodSpeed Performance Gauge
0%
67.1 µs67 µs
Single parameter
benchmark/subst.bench.ts::subst benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
69.6 µs69.5 µs
Very long values (200 chars each)
benchmark/querystring.bench.ts::stringify benchmarks::Value length scaling
CodSpeed Performance Gauge
0%
80.5 µs80.5 µs
Large array (50 items)
benchmark/querystring.bench.ts::stringify benchmarks::Array values
CodSpeed Performance Gauge
0%
1.9 ms1.9 ms
Heavy encoding (many special chars)
benchmark/querystring.bench.ts::stringify benchmarks::Special characters and encoding
CodSpeed Performance Gauge
0%
58.3 µs58.3 µs
Heavy special characters (75% encoding)
benchmark/querystring.bench.ts::encodeString benchmarks::Character type variations
CodSpeed Performance Gauge
0%
33.8 µs33.7 µs
Boolean values only
benchmark/querystring.bench.ts::stringify benchmarks::Value types
CodSpeed Performance Gauge
0%
52.7 µs52.7 µs
Array of mixed types
benchmark/querystring.bench.ts::stringify benchmarks::Array values
CodSpeed Performance Gauge
0%
51.2 µs51.2 µs
Empty arrays
benchmark/querystring.bench.ts::stringify benchmarks::Edge cases
CodSpeed Performance Gauge
0%
46.7 µs46.6 µs
No encoding needed (pure alphanumeric)
benchmark/querystring.bench.ts::stringify benchmarks::Special characters and encoding
CodSpeed Performance Gauge
0%
48.6 µs48.6 µs
Number values only
benchmark/querystring.bench.ts::stringify benchmarks::Value types
CodSpeed Performance Gauge
0%
58.4 µs58.3 µs
String values only
benchmark/querystring.bench.ts::stringify benchmarks::Value types
CodSpeed Performance Gauge
0%
52.9 µs52.8 µs
Null and undefined values
benchmark/querystring.bench.ts::stringify benchmarks::Edge cases
CodSpeed Performance Gauge
0%
59.6 µs59.6 µs
Mixed value types
benchmark/subst.bench.ts::subst benchmarks::Different value types
CodSpeed Performance Gauge
0%
75.1 µs75 µs
Mixed encoding complexity
benchmark/querystring.bench.ts::stringify benchmarks::Special characters and encoding
CodSpeed Performance Gauge
0%
56.7 µs56.6 µs
Long values (50 chars each)
benchmark/querystring.bench.ts::stringify benchmarks::Value length scaling
CodSpeed Performance Gauge
0%
56.9 µs56.9 µs
Five parameters
benchmark/querystring.bench.ts::stringify benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
55.9 µs55.8 µs
Form submission data
benchmark/querystring.bench.ts::stringify benchmarks::Real-world use cases
CodSpeed Performance Gauge
0%
69.3 µs69.3 µs
Light encoding (spaces only)
benchmark/querystring.bench.ts::stringify benchmarks::Special characters and encoding
CodSpeed Performance Gauge
0%
51.4 µs51.3 µs
Fifty parameters
benchmark/querystring.bench.ts::stringify benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
196.6 µs196.6 µs
Twenty parameters
benchmark/querystring.bench.ts::stringify benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
100.5 µs100.5 µs
Small object (2 params)
benchmark/querystring.bench.ts::stringify benchmarks::Comparison scenarios
CodSpeed Performance Gauge
0%
24.1 µs24.1 µs
Empty string values
benchmark/querystring.bench.ts::stringify benchmarks::Edge cases
CodSpeed Performance Gauge
0%
52.8 µs52.8 µs
Empty object
benchmark/querystring.bench.ts::stringify benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
16.8 µs16.8 µs
Search with filters
benchmark/querystring.bench.ts::stringify benchmarks::Real-world use cases
CodSpeed Performance Gauge
0%
63.4 µs63.4 µs
API query with includes
benchmark/querystring.bench.ts::stringify benchmarks::Real-world use cases
CodSpeed Performance Gauge
0%
57.4 µs57.4 µs
Pagination params
benchmark/querystring.bench.ts::stringify benchmarks::Real-world use cases
CodSpeed Performance Gauge
0%
54.9 µs54.9 µs
Single parameter
benchmark/querystring.bench.ts::stringify benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
54.6 µs54.6 µs
Unicode characters
benchmark/querystring.bench.ts::stringify benchmarks::Special characters and encoding
CodSpeed Performance Gauge
0%
54 µs54 µs
Medium encoding (common special chars)
benchmark/querystring.bench.ts::stringify benchmarks::Special characters and encoding
CodSpeed Performance Gauge
0%
51.8 µs51.8 µs
Large object (16 params with arrays)
benchmark/querystring.bench.ts::stringify benchmarks::Comparison scenarios
CodSpeed Performance Gauge
0%
42.3 µs42.3 µs
E-commerce cart params
benchmark/querystring.bench.ts::stringify benchmarks::Real-world use cases
CodSpeed Performance Gauge
0%
63.1 µs63.1 µs
Multiple arrays
benchmark/querystring.bench.ts::stringify benchmarks::Array values
CodSpeed Performance Gauge
0%
54.8 µs54.8 µs
Short values (5 chars each)
benchmark/querystring.bench.ts::stringify benchmarks::Value length scaling
CodSpeed Performance Gauge
0%
52.4 µs52.4 µs
Small array (3 items)
benchmark/querystring.bench.ts::stringify benchmarks::Array values
CodSpeed Performance Gauge
0%
47 µs47 µs
Two parameters
benchmark/querystring.bench.ts::stringify benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
50.6 µs50.6 µs
Special numeric values
benchmark/querystring.bench.ts::stringify benchmarks::Edge cases
CodSpeed Performance Gauge
0%
94.8 µs94.8 µs
BigInt values only
benchmark/querystring.bench.ts::stringify benchmarks::Value types
CodSpeed Performance Gauge
0%
72.1 µs72.2 µs
Medium array (10 items)
benchmark/querystring.bench.ts::stringify benchmarks::Array values
CodSpeed Performance Gauge
0%
79.5 µs79.6 µs
Mixed primitive types
benchmark/querystring.bench.ts::stringify benchmarks::Value types
CodSpeed Performance Gauge
0%
77.4 µs77.5 µs
Ten parameters
benchmark/querystring.bench.ts::stringify benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
70.8 µs70.9 µs
Very long ASCII string (1000 chars)
benchmark/querystring.bench.ts::encodeString benchmarks::String length scaling
CodSpeed Performance Gauge
0%
49.7 µs49.7 µs
Keys with special characters
benchmark/query.bench.ts::query benchmarks::Special characters
CodSpeed Performance Gauge
0%
52.3 µs52.3 µs
Medium ASCII string (50 chars)
benchmark/querystring.bench.ts::encodeString benchmarks::String length scaling
CodSpeed Performance Gauge
0%
44.7 µs44.7 µs
Analytics tracking params
benchmark/querystring.bench.ts::stringify benchmarks::Real-world use cases
CodSpeed Performance Gauge
0%
79.2 µs79.2 µs
Twenty parameters
benchmark/query.bench.ts::query benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
99.4 µs99.5 µs
Medium object (10 params)
benchmark/querystring.bench.ts::stringify benchmarks::Comparison scenarios
CodSpeed Performance Gauge
0%
30.8 µs30.8 µs
Original complex test
benchmark/query.bench.ts::query benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
85.3 µs85.4 µs
2-byte UTF-8 characters
benchmark/querystring.bench.ts::encodeString benchmarks::Unicode and multi-byte characters
CodSpeed Performance Gauge
0%
77.8 µs77.9 µs
Empty string
benchmark/querystring.bench.ts::encodeString benchmarks::String length scaling
CodSpeed Performance Gauge
0%
22.7 µs22.7 µs
Short values (5 chars)
benchmark/query.bench.ts::query benchmarks::Value length scaling
CodSpeed Performance Gauge
0%
50.2 µs50.2 µs
Long values (50 chars)
benchmark/query.bench.ts::query benchmarks::Value length scaling
CodSpeed Performance Gauge
0%
58.5 µs58.7 µs
Values with spaces
benchmark/query.bench.ts::query benchmarks::Special characters
CodSpeed Performance Gauge
0%
53.7 µs53.8 µs
Values with special characters
benchmark/query.bench.ts::query benchmarks::Special characters
CodSpeed Performance Gauge
0%
53.5 µs53.6 µs
Unicode characters
benchmark/query.bench.ts::query benchmarks::Special characters
CodSpeed Performance Gauge
0%
63 µs63.1 µs
Boolean values only
benchmark/query.bench.ts::query benchmarks::Different value types
CodSpeed Performance Gauge
0%
61.8 µs62 µs
Empty object
benchmark/query.bench.ts::query benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
22.6 µs22.7 µs
BigInt values
benchmark/query.bench.ts::query benchmarks::Different value types
CodSpeed Performance Gauge
0%
68.8 µs69 µs
Search with filters
benchmark/query.bench.ts::query benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
69.7 µs69.9 µs
Medium values (20 chars)
benchmark/query.bench.ts::query benchmarks::Value length scaling
CodSpeed Performance Gauge
0%
53.6 µs53.8 µs
API query with includes
benchmark/query.bench.ts::query benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
63.3 µs63.4 µs
Mixed types
benchmark/query.bench.ts::query benchmarks::Different value types
CodSpeed Performance Gauge
0%
72.3 µs72.5 µs
Ten parameters
benchmark/query.bench.ts::query benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
71.2 µs71.4 µs
Two parameters
benchmark/query.bench.ts::query benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
56.4 µs56.6 µs
Number values only
benchmark/query.bench.ts::query benchmarks::Different value types
CodSpeed Performance Gauge
0%
57.7 µs57.8 µs
Pagination params
benchmark/query.bench.ts::query benchmarks::Real-world patterns
CodSpeed Performance Gauge
0%
55.8 µs56 µs
Five parameters
benchmark/query.bench.ts::query benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
68.5 µs68.7 µs
Single parameter
benchmark/query.bench.ts::query benchmarks::Parameter count scaling
CodSpeed Performance Gauge
0%
59.3 µs59.5 µs
Array values
benchmark/query.bench.ts::query benchmarks::Different value types
CodSpeed Performance Gauge
0%
66.7 µs66.9 µs
Simple join without separators at boundaries
benchmark/join.bench.ts::join benchmarks::Basic joins
CodSpeed Performance Gauge
0%
25.2 µs25.3 µs
String values only
benchmark/query.bench.ts::query benchmarks::Different value types
CodSpeed Performance Gauge
0%
60.9 µs61.2 µs

Commits

Click on a commit to change the comparison range
Base
main
5a1fe77
+44.55%
Add comprehensive changeset documentation for performance optimizations (#84) * Initial plan * Update changeset with comprehensive PR analysis and detailed optimization descriptions Co-authored-by: hckhanh <6380436+hckhanh@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: hckhanh <6380436+hckhanh@users.noreply.github.com>
355d420
2 days ago
by Copilot
© 2025 CodSpeed Technology
Home Terms Privacy Docs