Avatar for the hyf0 user
hyf0
sugar_path
BlogDocsChangelog

perf: optimize normalize() to avoid allocation for already-clean paths

#32Merged
Comparing
hyf_3284290384
(
d139766
) with
main
(
ce5e297
)
CodSpeed Performance Gauge
×2.1
Improvement
8
Untouched
16
Skipped
1

Benchmarks

25 total
normalize_deep_clean
benches/normalize.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
×2.1
9.6 µs4.6 µs
normalize_already_clean
benches/normalize.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
×2
23 µs11.3 µs
normalize_already_clean_absolute
benches/normalize.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
+98%
12.7 µs6.4 µs
normalize_short_clean
benches/normalize.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
+91%
5.4 µs2.8 µs
absolutize_with
benches/absolutize.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
+28%
13.3 µs10.4 µs
normalize_mixed_workload
benches/normalize.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
+26%
45.3 µs35.9 µs
to_slash_deep_nesting
benches/to_slash.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
+12%
815.8 ns728.3 ns
absolutize
benches/absolutize.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
+11%
27 µs24.3 µs
as_path_chaining
benches/as_path.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
+7%
30.1 µs28.2 µs
normalize_needs_work
benches/normalize.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
+7%
30 µs28.1 µs
to_slash_mixed_separators
benches/to_slash.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
+4%
793.9 ns764.7 ns
to_slash_absolute_paths
benches/to_slash.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
+4%
2.4 µs2.4 µs
to_slash
benches/to_slash.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
+2%
3.8 µs3.7 µs
to_slash_vs_to_slash_lossy
benches/to_slash.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
0%
9.4 µs9.4 µs
as_path_str
benches/as_path.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
0%
537.5 ns537.5 ns
as_path_string
benches/as_path.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
0%
683.9 ns683.9 ns
to_slash_lossy_absolute_paths
benches/to_slash.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
-1%
3.8 µs3.8 µs
relative_deep_nesting
benches/relative.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
-1%
13 µs13.1 µs
to_slash_lossy
benches/to_slash.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
-1%
6.4 µs6.5 µs
relative_simple
benches/relative.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
-1%
9.5 µs9.6 µs
relative_same_path
benches/relative.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
-3%
3 µs3 µs
relative_parent_child
benches/relative.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
-3%
4.5 µs4.6 µs
relative_with_dots
benches/relative.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
-7%
7.9 µs8.5 µs
as_path_vs_path_new
benches/as_path.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
-7%
723.9 ns782.2 ns
normalize
benches/normalize.rs::benches::criterion_benchmark
Skipped
30 µs*

Commits

Click on a commit to change the comparison range
Base
main
ce5e297
×2.1
perf: optimize normalize() to avoid allocation for already-clean paths
d139766
1 month ago
by hyf0
© 2026 CodSpeed Technology
Home Terms Privacy Docs