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

   ## What does this change?
   
   - Same-dictionary concatenation used to create one temporary buffer wrapper 
per input chunk.
   - Use `concatFixedWidthBuffers` directly for the dictionary indices.
   - Keep the dictionary-unification path unchanged for different dictionaries.
   
   ## Benchmark
   
   Command:
   
   ```text
   go test ./arrow/array -run '^$' -bench 
'^BenchmarkConcatenateSameDictionary$' -benchmem -benchtime=200ms -count=3
   ```
   
   Apple M1 Pro, Go 1.26.3. The benchmark concatenates 65,536 rows with the 
same four-value string dictionary, split across different chunk counts.
   
   | Chunks | Before ns/op | After ns/op | Before B/op | After B/op | Allocs 
before/after |
   | ---: | ---: | ---: | ---: | ---: | ---: |
   | 1 | 33,736 | 33,262 | 271,049 | 270,962 | 11 / 9 |
   | 8 | 33,791 | 33,809 | 272,353 | 271,650 | 26 / 17 |
   | 64 | 42,134 | 39,250 | 282,785 | 277,153 | 138 / 73 |
   | 1,024 | 198,280 | 157,632 | 462,626 | 371,234 | 2,058 / 1,033 |
   | 8,192 | 1,202,369 | 928,859 | 1,778,211 | 1,057,314 | 16,394 / 8,201 |
   
   ## Tests
   
   - `go test ./arrow/array -count=1`
   - `go test ./arrow/... ./internal/...`
   


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

Reply via email to