Skip to content

Instantly share code, notes, and snippets.

@dtynn
Created July 6, 2020 10:01
Show Gist options
  • Save dtynn/77d0c0198a524e6a45d16233a791a4f7 to your computer and use it in GitHub Desktop.
Save dtynn/77d0c0198a524e6a45d16233a791a4f7 to your computer and use it in GitHub Desktop.
rle size
package main
import (
"bytes"
"log"
"github.com/filecoin-project/go-bitfield"
)
func main() {
bf1 := bitfield.New()
for i := 0; i < 24000; i++ {
bf1.Set(uint64(i * 2))
}
var buf1 bytes.Buffer
if err := bf1.MarshalCBOR(&buf1); err != nil {
log.Fatalln("marshal cbor for bitfield 1:", err)
}
log.Println("buf1 len:", len(buf1.Bytes()))
bf2 := bitfield.New()
for i := 0; i < 24000; i++ {
bf2.Set(uint64(100000 + 2*i))
}
var buf2 bytes.Buffer
if err := bf2.MarshalCBOR(&buf2); err != nil {
log.Fatalln("marshal cbor for bitfield 2:", err)
}
log.Println("buf2 len:", len(buf2.Bytes()))
merged, err := bitfield.MergeBitFields(&bf1, &bf2)
if err != nil {
log.Println("merged: ", err)
}
var bufm bytes.Buffer
if err := merged.MarshalCBOR(&bufm); err != nil {
log.Fatalln("marshal cbor for merged:", err)
}
log.Println("merged len:", len(bufm.Bytes()))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment