fallintoplace opened a new pull request, #1755:
URL: https://github.com/apache/iceberg-go/pull/1755

   ## Summary
   
   - collect each manifest batch under one mutex acquisition
   - reduce synchronization from once per accepted entry to once per manifest
   - preserve allocation behavior while avoiding lock contention during 
concurrent planning
   
   ## Benchmarks
   
   `go test ./table -run "^$" -bench "^BenchmarkManifestEntryCollection$" 
-benchmem -count=6 -cpu=1,4,16`
   
   With 1,000 entries per manifest on an Apple M1 Pro:
   
   | Workload | CPU | Before | After | Change |
   | --- | ---: | ---: | ---: | ---: |
   | 8 data manifests | 4 | 788.5 us | 165.0 us | -79.1% |
   | 64 data manifests | 4 | 6.879 ms | 1.711 ms | -75.1% |
   | 8 delete manifests | 4 | 855.7 us | 181.3 us | -78.8% |
   | 64 delete manifests | 4 | 6.965 ms | 1.606 ms | -77.0% |
   
   `B/op` is unchanged in these cases.
   
   ## Validation
   
   - `go test ./...`
   - `go test -race ./table -run TestManifestEntries_ConcurrentMerge -count=1`
   - `golangci-lint run --timeout=10m`


-- 
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]

Reply via email to