Skip to content

Releases: kelindar/bitmap

v1.5.3

19 May 20:45
f172a65

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.5.2...v1.5.3

v1.5.2

06 Nov 05:37
649a9ff

Choose a tag to compare

What's Changed

New Contributors

  • @mhr3 made their first contribution in #37

Full Changelog: v1.5.1...v1.5.2

v1.5.1

02 Jul 10:15
c15d0a3

Choose a tag to compare

What's Changed

Full Changelog: v1.5.0...v1.5.1

v1.5.0

03 May 19:18
fa863a0

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.4.1...v1.5.0

v1.4.1

08 Jun 20:19
2bbf548

Choose a tag to compare

What's Changed

  • Improved aggregations, rolled back popcount by @kelindar in #29

Full Changelog: v1.4.0...v1.4.1

v1.4.0

07 Jun 18:26
9bb0cfc

Choose a tag to compare

This release adds simple generic functions for filtered reduction specifically Sum([]T, Bitmap), Min([]T, Bitmap) and Max([]T, Bitmap). They are not the most optimized at the moment, but should be at least 2x better than the naive implementations using range or loop, as these reductions are done in a vectorized way.

What's Changed

Full Changelog: v1.3.0...v1.4.0

v1.3.0

04 Jun 21:33
9c2019d

Choose a tag to compare

This release adds a vectorized population count implementation, described in the paper https://arxiv.org/pdf/1611.07612.pdf by W. Mula, N. Kurz and D. Lemire. The code itself is borrowed from https://github.com/viant/vec/tree/main/bits with few alteration and a toolchain, I have it working for amd64 but haven't implemented for arm64 yet.

This results in a 50% improvement of performance for Count() operation and is especially useful for large bitmaps.

What's Changed

Full Changelog: v1.2.2...v1.3.0

v1.2.2

04 Jun 09:57
5f7e2a1

Choose a tag to compare

What's Changed

  • Add hexadecimal JSON marshalling by @mFat7y in #26

Full Changelog: v1.2.1...v1.2.2

v1.2.1

01 Apr 11:19
9b9fa52

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.2.0...v1.2.1

v1.2.0

23 Jan 08:45
0d25d02

Choose a tag to compare

This release adds optimized code to perform And, And Not, Or and Xor operations on multiple bitmaps at once. The signature hence now adds a variadic parameter for extra bitmaps, as shown below.

func (*Bitmap) And(other Bitmap, extra ...Bitmap)
cpu: Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz
BenchmarkMany/and4-naive-8         	  100153	     12324 ns/op	       0 B/op	       0 allocs/op
BenchmarkMany/and4-many-8          	  139195	      8709 ns/op	       0 B/op	       0 allocs/op

The main difference is that SIMD code generated now performs multiple of these instructions at once, allowing us to make better use of the cached destination bitmap. Below are the comparison results between naive version which calls And() 4 times and the batched version which calls And() with 1 other bitmap and 3 extra.

image

image

image

What's Changed

Full Changelog: v1.1.5...v1.2.0