fallintoplace opened a new pull request, #1902: URL: https://github.com/apache/iceberg-go/pull/1902
## What changed - Cache the equality field-group key once per delete file. - Avoid allocating the per-task grouping map when all delete files use one field group. - Keep the existing grouping path for tasks with multiple field groups. - Reuse the existing assembly coverage and benchmark setup. ## Why Most tasks have one equality field group. The old path formatted the same `fieldIDs` slice and allocated a grouping map for every task, even when there was nothing to split. ## Benchmark Run on an Apple M1 Pro with: `go test ./table -run '^$' -bench '^BenchmarkEqualityDeleteSetAssembly/(shared-single-file|shared-four-file-union)/shared$' -benchmem -benchtime=2s -count=5` These are medians over five runs. Before is `upstream/main` and after is this change. | Case | Before | After | | --- | --- | --- | | 1 shared delete file, 1 group | 295.826 µs/op, 216,383 B/op, 5,022 allocs/op | 109.775 µs/op, 176,328 B/op, 2,022 allocs/op | | 4 shared delete files, 1 group | 909.692 µs/op, 525,542 B/op, 17,045 allocs/op | 324.757 µs/op, 365,408 B/op, 5,045 allocs/op | ## Testing - `go test ./table -count=1` - `go test ./table -race -count=1` - `go vet ./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]
