optimize bitfield intersect

This commit is contained in:
zgfzgf 2020-11-28 21:07:14 +08:00
parent c016e34dbc
commit f4adf03ce5

View File

@ -202,21 +202,15 @@ var bitFieldDecodeCmd = &cli.Command{
var bitFieldIntersectCmd = &cli.Command{ var bitFieldIntersectCmd = &cli.Command{
Name: "intersect", Name: "intersect",
Usage: "Two bitfields intersect",
Description: "intersect 2 bitfields and print the resulting bitfield as base64", Description: "intersect 2 bitfields and print the resulting bitfield as base64",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "enc",
Value: "base64",
Usage: "specify input encoding to parse",
},
},
Action: func(cctx *cli.Context) error { Action: func(cctx *cli.Context) error {
b, err := decode(cctx, 1) a, err := decode(cctx, 0)
if err != nil { if err != nil {
return err return err
} }
a, err := decode(cctx, 0) b, err := decode(cctx, 1)
if err != nil { if err != nil {
return err return err
} }
@ -226,17 +220,11 @@ var bitFieldIntersectCmd = &cli.Command{
return xerrors.Errorf("intersect: %w", err) return xerrors.Errorf("intersect: %w", err)
} }
s, err := o.RunIterator() str, err := encode(cctx, o)
if err != nil { if err != nil {
return err return err
} }
fmt.Println(str)
bytes, err := rlepluslazy.EncodeRuns(s, []byte{})
if err != nil {
return err
}
fmt.Println(base64.StdEncoding.EncodeToString(bytes))
return nil return nil
}, },