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

   ## What changed
   
   - Allocate the equality-delete mask only after the first matching row.
   - Return the input batch directly when no row matches.
   - Keep the existing `compute.Filter` path for batches with matches.
   - Add a no-match correctness test and integer/string benchmarks.
   
   ## Why
   
   An equality delete set can be non-empty even when a record batch has no 
matching rows. The old path allocated and filled a full bitmap and called 
`compute.Filter` for every batch.
   
   ## Benchmark
   
   Run on an Apple M1 Pro with:
   
   `go test ./table -run '^$' -bench 
'BenchmarkProcessEqualityDeletesNoMatch(Int|String)/rows=(100000|1000000)/deletes=10$'
 -benchmem -count=5`
   
   Representative medians:
   
   | Case | Before | After |
   | --- | --- | --- |
   | Int, 100K rows / 10 deletes | 2.76 ms/op, 2.03 MB/op, 86 allocs/op | 2.22 
ms/op, 176 B/op, 4 allocs/op |
   | Int, 1M rows / 10 deletes | 26.46 ms/op, 20.15 MB/op, 87 allocs/op | 22.12 
ms/op, 176 B/op, 4 allocs/op |
   | String, 100K rows / 10 deletes | 4.58 ms/op, 2.94 MB/op, 95 allocs/op | 
2.63 ms/op, 208 B/op, 4 allocs/op |
   | String, 1M rows / 10 deletes | 40.57 ms/op, 29.28 MB/op, 96 allocs/op | 
26.18 ms/op, 208 B/op, 4 allocs/op |
   
   The allocation reduction is the main result. Wall time had normal run-to-run 
noise.
   
   ## Testing
   
   - `go test ./table -count=1`
   - `go test ./table -race -count=1`
   


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