fallintoplace opened a new pull request, #1923: URL: https://github.com/apache/iceberg-go/pull/1923
## What changed - Sum the lengths of the positional-delete Arrow chunks before creating the set. - Use that total as the initial map capacity. - Keep the existing validation and insertion logic unchanged. - Keep nil chunks safe and add coverage for duplicates across chunks. - Add a focused benchmark for 1K, 100K, and 1M positions. ## Benchmark Ran on an Apple M1 Pro (`darwin/arm64`) with Go `go1.26.3`. ```text go test ./table -run '^$' -bench '^BenchmarkCollectPosDeletePositions$' -benchmem -count=5 -benchtime=1s ``` Median of 5 runs: | Input | ns/op before | ns/op after | B/op before -> after | allocs/op before -> after | | --- | ---: | ---: | ---: | ---: | | 1K positions, 1 chunk | 39215 | 11898 | 74456 -> 36992 | 22 -> 6 | | 100K positions, 4 chunks | 3427952 | 1500532 | 4729533 -> 2364594 | 532 -> 258 | | 1M positions, 16 chunks | 58026680 | 45005787 | 75615856 -> 37832769 | 8210 -> 4098 | ## Checks - `go test ./...` - `go vet ./...` - `go test -race ./table` -- 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: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
