proost opened a new pull request, #169:
URL: https://github.com/apache/datasketches-go/pull/169

   During serialization, current implementation allocates same active items 
multiple times. It makes huge overhead because of heap allocation.
   
   See the benchmark:
   
   Current main branch:
   
   ```
   goos: darwin
   goarch: arm64
   pkg: github.com/apache/datasketches-go/frequencies
   cpu: Apple M1 Pro
   BenchmarkItemsSketchToSlice
   BenchmarkItemsSketchToSlice/int64/items=48
   BenchmarkItemsSketchToSlice/int64/items=48-10                  208099        
      6027 ns/op         132.73 MB/s       20096 B/op         51 allocs/op
   BenchmarkItemsSketchToSlice/int64/items=192
   BenchmarkItemsSketchToSlice/int64/items=192-10                  14924        
     80697 ns/op          38.46 MB/s      301185 B/op        195 allocs/op
   BenchmarkItemsSketchToSlice/int64/items=768
   BenchmarkItemsSketchToSlice/int64/items=768-10                   1072        
   1082348 ns/op          11.38 MB/s     4744468 B/op        771 allocs/op
   BenchmarkItemsSketchToSlice/string/items=48
   BenchmarkItemsSketchToSlice/string/items=48-10                 200163        
      5586 ns/op         167.22 MB/s       20928 B/op         51 allocs/op
   BenchmarkItemsSketchToSlice/string/items=192
   BenchmarkItemsSketchToSlice/string/items=192-10                 15355        
     75696 ns/op          49.70 MB/s      304512 B/op        195 allocs/op
   BenchmarkItemsSketchToSlice/string/items=768
   BenchmarkItemsSketchToSlice/string/items=768-10                  1129        
   1072233 ns/op          14.25 MB/s     4758036 B/op        771 allocs/op
   ```
   
   
   Change:
   
   ```
   goos: darwin
   goarch: arm64
   pkg: github.com/apache/datasketches-go/frequencies
   cpu: Apple M1 Pro
   BenchmarkItemsSketchToSlice
   BenchmarkItemsSketchToSlice/int64/items=48
   BenchmarkItemsSketchToSlice/int64/items=48-10                 2943316        
       401.4 ns/op      1992.87 MB/s        1664 B/op          3 allocs/op
   BenchmarkItemsSketchToSlice/int64/items=192
   BenchmarkItemsSketchToSlice/int64/items=192-10                 865233        
      1399 ns/op        2218.19 MB/s        6272 B/op          3 allocs/op
   BenchmarkItemsSketchToSlice/int64/items=768
   BenchmarkItemsSketchToSlice/int64/items=768-10                 211227        
      5016 ns/op        2456.31 MB/s       25856 B/op          3 allocs/op
   BenchmarkItemsSketchToSlice/string/items=48
   BenchmarkItemsSketchToSlice/string/items=48-10                2000376        
       599.6 ns/op      1557.73 MB/s        2496 B/op          3 allocs/op
   BenchmarkItemsSketchToSlice/string/items=192
   BenchmarkItemsSketchToSlice/string/items=192-10                575967        
      2041 ns/op        1843.51 MB/s        9600 B/op          3 allocs/op
   BenchmarkItemsSketchToSlice/string/items=768
   BenchmarkItemsSketchToSlice/string/items=768-10                145569        
      9110 ns/op        1677.53 MB/s       39424 B/op          3 allocs/op
   PASS
   ```


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