You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@iceberg.apache.org by "fallintoplace (via GitHub)" <gi...@apache.org> on 2026/10/22 10:08:05 UTC
[PR] perf(fileuri): skip URL parsing for plain local paths [iceberg-go]
fallintoplace opened a new pull request, #2278:
URL: https://github.com/apache/iceberg-go/pull/2278
## What
Skip general URL parsing for simple local paths in `fileuri.Parse`.
## Why
Plain local file paths need no URL decoding. Skipping the general parser removes work and an allocation from this common path.
## Implementation
- Fast-path lowercase `file:///` paths with simple ASCII characters.
- Keep `net/url.Parse` for escaped, malformed, non-ASCII, query, authority, opaque, and drive-letter forms.
- Add URL-equivalence checks and a package benchmark.
## Benchmark
`GOMAXPROCS=1 go test ./internal/fileuri -run '^$' -bench '^BenchmarkParseFileURI$' -benchmem -benchtime=220ms -count=7`
Go 1.26.3, darwin/arm64, Apple M1 Pro. Seven samples compared with benchstat. Base `a4fb4d0dafaeaf455990c1c3142462107662e5ec`, head `b69908d3497f7eb1aca7bee1a72fd532a7d2e2f4`. The package benchmark measures `Parse`, not end-to-end FileIO. The same benchmark file was used on both revisions.
| Case | Base → candidate | B/op | Allocs/op |
| --- | ---: | ---: | ---: |
| Short local | 183.5 → 16.68 ns/op (11.0×) | 144 → 0 | 1 → 0 |
| Warehouse path | 317.4 → 50.71 ns/op (6.3×) | 144 → 0 | 1 → 0 |
| Long local | 895.9 → 257.1 ns/op (3.5×) | 144 → 0 | 1 → 0 |
| Escaped local | 364.6 → 370.3 ns/op (no significant change) | 224 → 224 | 3 → 3 |
| Authority | 230.1 → 201.4 ns/op | 144 → 144 | 1 → 1 |
| Windows drive | 208.8 → 205.6 ns/op | 144 → 144 | 1 → 1 |
| Opaque | 158.5 → 157.4 ns/op | 144 → 144 | 1 → 1 |
Only the simple-local cases use the fast path. Fallback allocation counts are unchanged; no fallback timing gains are claimed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] perf(fileuri): skip URL parsing for plain local paths [iceberg-go]
Posted by "zeroshade (via GitHub)" <gi...@apache.org>.
zeroshade merged PR #2278:
URL: https://github.com/apache/iceberg-go/pull/2278
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org